访问嵌套模板类型

Gus*_*avo 4 c++ templates

假设有一个A类和MyType

template<typename DataType>
class MyType {
...
}

template<typename MyType>
class A {
...
}
Run Code Online (Sandbox Code Playgroud)

当我创建A的实例时A<MyType<int>>如何在A中访问模板类型int?

Vit*_*meo 6

向用户公开类型别名:

template<typename DataType>
class MyType {
public:
    using InnerDataType = DataType;
};

template<typename MyType>
class A {
public:
    using InnerType = MyType;
};
Run Code Online (Sandbox Code Playgroud)

用法:

using MyA = A<MyType<int>>;
static_assert(std::is_same<
    typename MyA::InnerType::InnerDataType,
    int>{});
Run Code Online (Sandbox Code Playgroud)

wandbox上的实例