访问另一个模板中的模板参数

时间:2014-05-22 09:13:10

标签: c++ templates

在下面的代码中:

class foo{};
class bar{};

template<class Type1=foo,class Type2=bar>
class A{};

template <class T= A<>>
class B
{
 public:
    void func(typename T::Type1 a){} //error  'Type1' : is not a member of 'A<foo,bar>'
};

int main()
{
    B<> b;
    b.func(foo()); //error
}

我想访问B模板的参数(在这种情况下为Type1Type2)如何才能使其正常工作?!

1 个答案:

答案 0 :(得分:4)

你需要&#34;导出&#34;类型,即将它们作为类模板的公共类型。例如

template<class T1=foo,class T2=bar>
class A
{
 public:
  typedef T1 Type1;
  typedef T2 Type2;
};

C ++ 11风格

template<class T1=foo,class T2=bar>
class A
{
 public:
  using Type1 = T1;
  using Type2 = T2;
};