Урок шаблона, который относится к себе как параметр шаблона шаблона?
-
27-09-2019 - |
Вопрос
Этот код:
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, вы должны использовать нормальное имя шаблона (т. Е. Имя из прилагающей области, а не введенное имя класса).
Не связан с StackOverflow