Страницы

Поиск по вопросам

среда, 9 января 2019 г.

Дружественный шаблонный класс

Почему gcc выдаёт ошибку?
[Error] specialization of 'template class A' must appear at namespace scope
template class A { template friend class A; };


Ответ

В С++ нет возможности использования частичной специализации для того, чтобы "очертить" только какое-то подмножество специализаций шаблона в качестве друзей.
14.5.4 Friends 8 Friend declarations shall not declare partial specializations. [ Example:
template class A { }; class X { template friend class A; // error };
—end example ]
То есть другом может быть либо шаблон (со всеми его специализациями), либо конкретная специализация (т.е полная специализация) шаблона.

Комментариев нет:

Отправить комментарий