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

uj2*_*uj2 7 c++ templates template-templates

这段代码:

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

template <typename T>
class B
{
    A<B> x;
};
Run Code Online (Sandbox Code Playgroud)

不编译,我想自从A<B>被解释为A<B<T> >B范围内.

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

Kir*_*sky 12

试试这个:

template <typename T>
class B
{
    A< ::B > x; // fully qualified name for B
};
Run Code Online (Sandbox Code Playgroud)

根据C++标准14.6.1/2,您应该使用模板的正常名称(即封闭范围中的名称,而不是inject-class-name).

  • 不错的一个:)值得注意的是`:: B`之前的空间是需要的,尽管:) (6认同)