gpt4 book ai didi

c++ - 解包方法参数的元组

转载 作者:行者123 更新时间:2023-11-30 03:42:02 29 4
gpt4 key购买 nike

我在将元组扩展为其内容时遇到语法问题。

我的工作代码:

class Example
{
public:
static void Go( int i, float f)
{
std::cout << "p1: " << i << std::endl;
std::cout << "p2: " << f << std::endl;
}

template <typename T, size_t ... I>
static void Do( T parm )
{
Go( std::get<I>( parm)...);
}
};

int main()
{
using X = std::tuple<int, float>;
Example::Do<X,0,1>( std::make_tuple( 1,2.2)) ;
}

但是我想用类似的东西来调用扩展

int main()
{
using X = std::tuple<int, float>;
using IDX = std::std::index_sequence_for<int, float>;
Example::Do<X,IDX>( std::make_tuple( 1,2.2)) ;
}

所以我正在寻找类似的东西(无法编译......):

template <typename T, size_t ... I>
static void Do<T, std::index_sequence<I...>>(T parm)
{
Go( std::get<I>( parm)...);
}

最佳答案

按值传递索引序列:

template <typename T, size_t... I>
static void Do(T parm, std::index_sequence<I...>)
{
Go(std::get<I>(parm)...);
}

像这样调用方法:

Example::Do(std::make_tuple(1, 2.2), 
std::index_sequence_for<int, float>{});

关于c++ - 解包方法参数的元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37027095/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com