7

このコード:

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

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

はのスコープ内でA<B>あると解釈されるため、コンパイルされません。A<B<T> >B

Bでは、そのスコープ内でテンプレート テンプレート パラメータとしてどのように渡すのでしょうか?

4

1 に答える 1

13

これを試して:

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

C++ 標準 14.6.1/2 によれば、テンプレートの通常の名前を使用する必要があります (つまり、injected-class-name ではなく、囲んでいるスコープからの名前)。

于 2010-06-16T10:53:29.213 に答える