#cpp
Почему gcc выдаёт ошибку? [Error] specialization of 'template class A' must appear at namespace scope templateclass A { template friend class A ; };
Ответы
Ответ 1
В С++ нет возможности использования частичной специализации для того, чтобы "очертить" только какое-то подмножество специализаций шаблона в качестве друзей. 14.5.4 Friends 8 Friend declarations shall not declare partial specializations. [ Example: templateclass A { }; class X { template friend class A ; // error }; —end example ] То есть другом может быть либо шаблон (со всеми его специализациями), либо конкретная специализация (т.е полная специализация) шаблона. Ответ 2
Уберите: template class A { template friend class A; }; Update: ну... опять же - template friend class A; Впрочем, не очень уверен, что сработает именно специализация.
Комментариев нет:
Отправить комментарий