繁体   English   中英

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

[英]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;
}

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM