Re[4]: friend operator для шаблона : не генерируется в C++Bu
От: Lorenzo_LAMAS  
Дата: 10.04.04 08:22
Оценка:
Ты однако не счел нужным заметить показанный мною ЧЕТВЕРТЫЙ способ. БЦЦ у меня нет, проверить не смогу. Дело за тобой.

template<class>class A;
template<class T>
A<T> operator + (const A<T> &, const A<T> &);

template<class T>
class A
{
   friend operator +<T>(const A&, const A &);
};



Здесь другом объявлена специализация шаблонной функции

C>p.s.

C>С шаблоном оператора я примерно понял, почему так. Хотя, не до конца. Можно маленький ликбез?
C>template <class T> friend fun(Foo2<T>);

C>-- ссылка в объявлении на friend-функцию, которая шаблон? Так?

Да, об этом раза 4 сказали уже.

C>
C>friend fun(Foo2<T>);
C>

C>-- ссылка на friend-функцию, которая просто функция. Так?

Да.

C>А как правильно трактовать ситуацию, когда я потом пишу шаблон этой функции:

C>
C>template <class T>
C>fun (Foo2<T> a)
C>{
C>...
C>}
C>

C>Это определение будет распознаваться как то-самое, на которое мы ссылаемся по
C>а) Первому методу (ну, это очевидно)
C>б) Второму? (вот в чем вопрос)

Какой вопрос? Это же шаблон функции, а во втором случае другом объявлена нешаблонная функция.
Of course, the code must be complete enough to compile and link.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.