Jas*_*n R 4 c++ templates typeinfo variadic-templates c++11
我不确定我是否以最有效的方式提出这个问题,但我现在才开始使用C++ 11,并且无法将新功能应用于手头的问题.我有以下概念功能:
template <typename ... Args>
std::vector<std::type_index> foo()
Run Code Online (Sandbox Code Playgroud)
我想foo()
返回一个vector
包含type_index
参数包中每个类型的值的值Args
.例如,foo<int, vector<int>, double>()
将返回一个vector
包含{ type_index(typeid(int)), type_index(typeid(vector<int>)), type_index(typeid(double)) }
.
从理论上讲,我想迭代包中的类型并在每个类型上调用上面的转换(即给出一个类型T
,返回type_index(typeid(T))
.我觉得应该有一个干净的方法来实现这一点,但我不清楚如何操作可变模板机器来完成这项工作.我的直觉是否正确?
对包中的类型进行"迭代"的最简单方法是使用包扩展来重复所需的模式.在这种情况下,您将编写如下内容:
return { type_index(typeid(Args))... }
Run Code Online (Sandbox Code Playgroud)