Используя ключевое слово class
, вы можете объявить новый тип с именем T
; который не ссылается на параметр шаблона T
. (Фактически он скрывает параметр шаблона T
.)
Просто удалите ключевое слово class
, тогда объявление друга не будет пересылать объявление нового типа.
template<typename T>
class A
{
friend T;
int n;
};
Это использование (friend
спецификатор простого типа ; friend
спецификатор типа ;) появился с C ++ 11.