我需要找出类模板的类型。
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容器通常以这种方式保持元素类型info,例如std::vector<int>::value_type
。