Шаблонный класс друзей с большим количеством параметров шаблона

У меня есть шаблон класса Obj1 с тремя параметрами шаблона

template < class A, class B, class C >
class Obj1
{
 // some implementation
};

и шаблон второго класса Obj2 с двумя параметрами шаблона,

template < class A, class B >
 class Obj2
 {
 // some implementation
 };

поэтому моя проблема такова:

Я хочу, чтобы класс Obj1 был другом класса Obj2, с первыми двумя параметрами шаблона с тем же значением, но я не знаю точного синтаксиса, как его писать, Сначала я пробовал этот путь

template < class A, class B>
class Obj2
{
 template< class C>
 friend class Obj1<a,b,c>;
};
</a,b,c>

но он не скомпилировался, поэтому просьба помочь мне, если вы можете.

1 ответ

Ответ на ваш вопрос здесь: qaru.site/questions/377621/... "Вы можете" подружиться "со всеми экземплярами шаблона класса или конкретной полной специализацией".

Итак, это то, что разрешено:

template < class A, class B, class C >
class Obj1
{
 // some implementation
};
template < class A, class B>
class Obj2
{
 public:
 template <class c,="" d,="" e=""> friend class Obj1; ///All instances
};
template < class A, class B>
class Obj3
{
 public:
 friend class Obj1<a,b,int>; ///One specific instantiation, possibly depending from your own templated parameters
 friend class Obj1<a,b,a>; ///One specific instantiation, possibly depending from your own templated parameters
 friend class Obj1<char,float,int>; ///One specific instantiation, possibly depending from your own templated parameters
};
</char,float,int></a,b,a></a,b,int></class>

licensed under cc by-sa 3.0 with attribution.