[英]How do I find out the type of a class instance template?
我需要找出 class 模板的类型。
m_class <int> temp{};
是否可以理解它具有“int”或任何其他类型? 我试过了
decltype( temp)
但它返回
m_clas<int>
我会很高兴你的帮助。
如果你可以修改m_class
你可以添加一个别名:
template <typename T>
struct m_class {
using type = T;
};
如果没有,您可以编写类型特征:
template <typename T>
struct m_class_type;
template <typename T>
struct m_class_type<m_class<T>> {
using type = T;
};
例子:
int main() {
m_class<int>::type f;
m_class_type<m_class<int>> g;
}
f
和g
都是int
。
如果您自己创建了m_class
,则必须自己跟踪 T:
template <class T>
class m_class {
public:
using type_t = T;
};
//...
m_class<int>::type_t myInt = 42;
STL 容器通常以这种方式保存元素类型信息,例如std::vector<int>::value_type
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.