【发布时间】:2019-08-23 15:12:28
【问题描述】:
我有一个元组类型定义:
using types = std::tuple<A,B,C>;
我有一个模板函数:
template <typename T>
uint32 f() { return 0; }
我定义了以下类型和变量(一个数组,其元素类型是函数的返回类型,大小是元组中的类型数):
using result_values = std::array<uint32, std::tuple_size<types>::value>;
result_values v;
对于元组类型定义 ({ f<A>(), f<B>(), f<C>() }) 中包含的每种类型,我如何编写一个函数,用模板函数 f 的返回值填充数组 v?
当然,元组类型是未知的,并且作为模板参数出现在某个地方。
我的猜测使我找到了一个使用index_sequence_for、tuple_element 和递归调用的解决方案,但我无法将它们放在一起。
【问题讨论】:
-
你不能只使用
{ f<types>(), ... }吗? -
编译器告诉我扩展模式不包含参数包(元组类型不是参数包)。
标签: c++ templates tuples template-meta-programming