簡體   English   中英

是否在內聯系中定義的友元函數是否內聯?

[英]Is a friend function defined in-class automatically inline?

如果在類中定義了成員函數,則它是內聯函數。 例如

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

我的問題是在類中定義的非成員友元函數是否也是自動內聯的。

例如

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

標准中的相關引用/ paragraph_no將非常受歡迎。 謝謝。

是的。 §11.4/ 5:

當且僅當該類是非本地類(9.8),函數名稱是非限定的,並且該函數具有命名空間范圍時,才能在類的友元聲明中定義函數。 這樣的功能是隱含的內聯。 在類中定義的友元函數位於定義它的類的(詞法)范圍內。 在類外定義的友元函數不是(3.4.1)。

由於類定義可能是在頭文件中,因此函數將被多重定義,因此它需要inline

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM