есть 2 класса. Код (Text): template <int x> class Cx { }; class Ca { }; класс Cx нужно объявить дружественным классу Ca для любых шаблонных параметров x. так не проходит: Код (Text): class Ca { friend Cx; };
Во! Код (Text): template <int x> class Cx { }; class Ca { template<int x> friend class Cx; }; Поспешил. Нужно было сперва MSDN почитать: Код (Text): // c3772.cpp // compile with: /c // A class template. template<class T> class A {}; // A partial specialization of the class template. template<class T> class A<T*> {}; // An explicit specialization. template<> class A<char>; class X { // Invalid declaration of a friend of a partial specialization. template<class T> friend class A<T*>; // C3772 // Instead, if it is appropriate for your application, declare a // friend of the class template. Consequently, all specializations // of the class template are friends: // template<class T> friend class A; // Or declare a friend of a particular partial specialization: // friend class A<int*>; // Or declare a friend of a particular explicit specialization: // friend class A<char>; };