|
|
Функция-друг для шаблона типа не является неявной шаблонной функцией, например:
template<class T> class task { // ... friend void next_time(); friend task<T>* preempt(task<T>*); friend task* prmt(task*); // ошибка // ... };
Здесь функция next_time() становится другом всех классов task, а каждый класс task имеет в качестве друга функцию preempt() c соответствующими типами параметров. Функцию preempt() можно определить как шаблон типа.
template<class T> task<T>* preempt(task<T>* t) { /* ... */ }
Описание функции prmt() является ошибочным, поскольку типа task не существует, а есть только специальные шаблонные типы task<int>, task<record>, и т.д.
| |