从模板类中获取"子类型"

P45*_*ent 2 c++ templates c++11

假设我有班级

template<
    typename T1, /*this is probably an integral type*/
    T1 Default /*this is a typical value of that integral type*/
> class Foo {};
Run Code Online (Sandbox Code Playgroud)

而这对于一个给定的实例T1Default,说foo.

我可以decltype(foo)用来获得完整的类型.

我可以使用一些语法来获取值Default吗?

For*_*veR 5

只是typedef在课堂上使用.

template<
    typename T1,
    typename T2
> class Foo 
{
public:
   typedef T1 type1;
   typedef T2 type2;
};
Run Code Online (Sandbox Code Playgroud)

要获得默认值,您可以使用实际相同的语法.

template<
    typename T1,
    T1 Default
> class Foo 
{
public:
   typedef T1 type1;
   static constexpr const T1 default_value = Default;
};
Run Code Online (Sandbox Code Playgroud)