模板类将自身称为模板模板参数?

时间:2010-06-16 10:25:11

标签: c++ templates template-templates

此代码:

template <template <typename> class T>
class A
{
};

template <typename T>
class B
{
    A<B> x;
};
我认为

不编译,因为A<B>A<B<T> >的范围内被解释为B

那么,如何将B作为模板模板参数传递到其范围内?

1 个答案:

答案 0 :(得分:12)

试试这个:

template <typename T>
class B
{
    A< ::B > x; // fully qualified name for B
};

根据C ++标准14.6.1 / 2,您应该使用模板的正常名称(即封闭范围中的名称,而不是注入类名称)。