C++ 类中定义的友元函数是否自动内联?

C++ 类中定义的友元函数是否自动内联?,c++,inline,friend,C++,Inline,Friend,如果成员函数是在类内部定义的,则它是一个内联函数。例如 struct X { void mem_f() {} //mem_f is inline }; 我的问题是,类中定义的非成员friend函数是否也自动内联 例如 欢迎使用标准中的相关引用/段落编号。谢谢。是的,是的。§11.4/5: 函数可以在友元中定义 类的声明当且仅当 该类为非本地类(9.8), 函数名是非限定的,并且 该函数具有命名空间作用域。 这样的函数是隐式内联的。中定义的友元函数 类位于的(词汇)范围内 在其中定义它的类

如果成员函数是在类内部定义的,则它是一个内联函数。例如

struct X
{
   void mem_f() {} //mem_f is inline
};
我的问题是,类中定义的非成员friend函数是否也自动内联

例如

欢迎使用标准中的相关引用/段落编号。谢谢。

是的,是的。§11.4/5:

函数可以在友元中定义 类的声明当且仅当 该类为非本地类(9.8), 函数名是非限定的,并且 该函数具有命名空间作用域。 这样的函数是隐式内联的。中定义的友元函数 类位于的(词汇)范围内 在其中定义它的类。A. 在外部定义的友元函数 类别不是(3.4.1)

由于类定义可能在头文件中,因此函数将被多次定义,因此它需要是
内联的

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