Урок шаблона, который относится к себе как параметр шаблона шаблона?

StackOverflow https://stackoverflow.com/questions/3052415

Вопрос

Этот код:

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

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

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

Итак, как вы проходите B В качестве параметра шаблона шаблона внутри его объема?

Это было полезно?

Решение

Попробуй это:

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top