【发布时间】:2016-05-07 21:31:53
【问题描述】:
在尝试回复 this question 时,我发现自己需要为可变参数函数创建一堆参数,其中:
- 参数个数没有给出
- 类型都相同,但未知(即使它们必须是默认可构造的)
在运行时,标准容器和for循环可用于执行此操作。
无论如何,我想在编译时生成一组参数,以便能够将它们转发给可变参数函数。
因此,std::tuple 似乎是显而易见的解决方案。
这里出现了一个问题:在编译时给定大小 N 和默认可构造类型 T,我如何编写函数来生成给定大小的元组?
我正在寻找这样的东西:
auto tup = gen<MyType, N>();
在 SO 上是基于递归生成器的结构的 notable example,但我一直在努力使用基于函数的解决方案,但我无法在任何地方找到它。
【问题讨论】:
-
如果类型都相同,我会使用
std::array<T, N>而不是元组。 -
@davihigh 当然。我最终使用了一个元组,因为它确实更具挑战性。我这样做是为了实验,仅此而已。如果我遇到真正的问题,我也会使用
array。
标签: c++ templates c++14 variadic-templates stdtuple