Une fonction ami définie en classe est-elle automatiquement intégrée?

Si une fonction membre est définie dans la classe, il s’agit d’une fonction en ligne. Par exemple

struct X { void mem_f() {} //mem_f is inline }; 

Ma question est de savoir si une fonction d’ami non membre définie dans la classe est également automatiquement intégrée.

Par exemple

 struct Y { friend void friend_f() {} //is friend_f inline? }; 

Une citation pertinente / paragraph_no de la norme serait la bienvenue. Merci.

Oui, ça l’est. §11.4 / 5:

Une fonction peut être définie dans une déclaration d’amis d’une classe si et seulement si la classe est une classe non locale (9.8), le nom de la fonction n’est pas qualifié et si la fonction a une scope d’espace de noms. Une telle fonction est implicitement inline. Une fonction amie définie dans une classe est dans la scope (lexicale) de la classe dans laquelle elle est définie. Une fonction amie définie en dehors de la classe n’est pas (3.4.1).

Puisque la définition de la classe est vraisemblablement dans un fichier d’en-tête, la fonction sera définie de manière multiple, elle doit donc être en inline .