sky*_*ack 5 c++ templates variadic-templates stdtuple c++14
在尝试回答这个问题时,我发现自己需要为动态函数创建一系列参数,其中:
在运行时,可以使用标准容器和for循环来执行此操作。
无论如何,我想在编译时生成一组参数,以便能够将它们转发给可变参数。
因此,std::tuple似乎是显而易见的解决方案。
这里出现一个问题:在编译时给定一个大小N和一个默认的可构造类型T,我该如何编写一个函数来生成给定大小的元组?
我正在寻找这样的东西:
auto tup = gen<MyType, N>();
Run Code Online (Sandbox Code Playgroud)
在SO上,是一个基于递归生成器的结构的显着示例,但是我在基于函数的解决方案中苦苦挣扎,而我却找不到任何地方。
正确编写的转发功能(la std::apply)应该与std::array<T, N>实现std::tuple_size/ std::get接口的其他任何功能一起使用。那就是
template<size_t, class T>
using T_ = T;
template<class T, size_t... Is>
auto gen(std::index_sequence<Is...>) { return std::tuple<T_<Is, T>...>{}; }
template<class T, size_t N>
auto gen() { return gen<T>(std::make_index_sequence<N>{}); }
Run Code Online (Sandbox Code Playgroud)