首页 > 解决方案 > 标准在哪里指定在类中定义的函数是内联的?

问题描述

据我了解,在类定义中定义的成员函数是隐式的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涉及)。

我找对地方了吗?如果不是,那么确切的标准措辞是什么以及在哪里?

标签: c++language-lawyermember-functionsone-definition-rule

解决方案


也许看看关于,好吧,的部分inline

[dcl.inline]/4:在类定义中定义的函数是内联函数。

这实际上在稍后重复,在关于成员函数的部分(这似乎也很明智!):

[class.mfct]/1:成员函数可以在其类定义中定义,在这种情况下,它是一个内联成员函数[..]


推荐阅读