Шаблонный класс, который называет себя шаблонным шаблонным параметром?

Этот код:

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

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

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

Так, как Вы передаете B как шаблонный шаблонный параметр в он - объем?

7
задан uj2 16 June 2010 в 10:25
поделиться

1 ответ

Попробуйте следующее:

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

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

12
ответ дан 6 December 2019 в 21:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: