我需要找出类模板的类型。
m_class <int> temp{};
是否可以理解它具有“int”或任何其他类型? 我试过了
decltype( temp)
但它回来了
m_clas<int>
我会很高兴得到你的帮助。
答案 0 :(得分:3)
如果您可以修改 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
。
答案 1 :(得分:1)
如果你自己制作了 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
。