如何找出类实例模板的类型?

  • 本文关键字:类型 何找出 实例 c++
  • 更新时间 :
  • 英文 :


我需要找出类模板的类型。

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;
}

fg都是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

最新更新