Класс шаблона, который ссылается на себя как параметр шаблона шаблона? - PullRequest
7 голосов
/ 16 июня 2010

Этот код:

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

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

не компилируется, я полагаю, поскольку A<B> интерпретируется как A<B<T> > в пределах B.

Итак, как это сделать?вы передаете B в качестве параметра шаблона шаблона в его области видимости?

1 Ответ

12 голосов
/ 16 июня 2010

Попробуйте:

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

В соответствии со стандартом C ++ 14.6.1 / 2 вы должны использовать обычное имя шаблона (т. Е. Имя из входящей области, а не имя введенного класса).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...