Можно ли объявить шаблон функций как друга без заявления о форварде?C++

Программы на C++. Форум разработчиков
Anonymous
Можно ли объявить шаблон функций как друга без заявления о форварде?

Сообщение Anonymous »

Я хотел бы написать шаблон класса с шаблоном функции друга. Если я напишу < /p>

Код: Выделить всё

template 
class A {
friend void f(A&);
int i = 0;
};

template 
void f(A& a) {
a.i = 1;
}
< /code>
Тогда это совершенно хорошо для компиляторов GCC и MSVC. < /p>
Но Clang не любит это, жалоба: < /p>

Ошибка: нет кандидатской функциональной шаблоны для функции зависимой подруги. Отправьте шаблон функции Formare F 
и SO Class Template A до его определения. Онлайн демонстрация: https://gcc.godbolt.org/z/j7kb97vks
Какая реализация здесь правильная?

Подробнее здесь: https://stackoverflow.com/questions/796 ... eclaration

Вернуться в «C++»