Можно ли объявить шаблон функций как друга без заявления о форварде?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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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