是否在内联系中定义的友元函数是否内联?

时间:2010-10-20 17:26:40

标签: c++ inline friend

如果在类中定义了成员函数,则它是内联函数。 E.g。

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

我的问题是在类中定义的非成员友元函数是否也自动内联。

E.g。

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

标准中的相关引用/ paragraph_no将非常受欢迎。感谢。

1 个答案:

答案 0 :(得分:13)

是的,确实如此。 §11.4/ 5:

  

可以在朋友中定义一个功能   当且仅当的时候声明一个类   该班级是非本地班级(9.8),   函数名称不合格,并且   该函数具有命名空间范围。   这样的函数是隐式内联的。在中定义的友元函数   一个类在(词法)范围内   定义它的类。一个   在外面定义的朋友功能   class不是(3.4.1)。

由于类定义可能是在头文件中,因此函数将被多重定义,因此需要inline