在我的理解中,类定义中定义的成员函数隐式inline
:
class X {
int f() { return 1; } // Implicitly inline.
};
int g() { return 2; } // Not implicitly inline.
我一直在寻找支持这一点的标准报价,但我只能找到 basic.link/7:
此外,成员函数、静态数据成员、类作用域的命名类或枚举,或者在类作用域 typedef 声明中定义的未命名类或枚举,使得类或枚举具有用于链接目的的 typedef 名称 ([dcl.typedef](,与它所属的类的名称具有相同的链接(如果有(。
我在 dcl.typedef 中找不到任何与简单类定义相关的内容(不涉及typedef
(。
我找对地方了吗?如果不是,确切的标准措辞是什么,在哪里?
也许看看关于,嗯,inline
的部分。 🤪
[dcl.inline]/4:
类定义中定义的函数是内联函数。
这实际上在稍后关于成员函数的部分中重复(这似乎也很明智!
[class.mfct]/1:
成员函数可以在其类定义中定义,在这种情况下,它是一个内联成员函数[..]
它在[class.mfct] 中:
成员函数可以在其类定义中定义,在这种情况下,它是一个内联成员函数,...