有没有办法获取模板类的类型,例如
//i have template function
template<typename T>
IData* createData();
//a template class instance
std::vector<int> a;
//using type of this instance in another template
//part in quotation mark is imaginary of course :D
IData* newData = createData<"typeOf(a)">();
用c++可以吗?或者有没有捷径可以选择
最佳答案
是 - 使用 boost::typeof
IData* newData = createData<typeof(a)>();
新标准 (C++0x
) 将为此提供内置方法。
请注意,您可以为 createData
提供一个伪参数,编译器可以使用它来推断类型。
template<typename T>
IData* createData(const T& dummy);
IData* newData = createData(a);
关于c++ - 获取模板类的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1053456/