Где в стандарте указано, что функции, определенные внутри класса, являются встроенными? - PullRequest
3 голосов
/ 08 октября 2019

В моем понимании, функции-члены, определенные внутри определения класса, неявно 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).

Я смотрю вправильное место? Если нет, то какая и где точная стандартная формулировка?

Ответы [ 2 ]

5 голосов
/ 08 октября 2019

Возможно, посмотрите в разделе о, ну, inline. 100

[dcl.inline]/4: Функция, определенная в определении класса, является встроенной функцией.

Это фактически повторяется позже, в разделе офункции-члены (что также кажется разумным!):

[class.mfct]/1: Функция-член может быть определена в определении класса, в этом случае это встроенная функция-член [..]

4 голосов
/ 08 октября 2019

Это в [class.mfct] :

Функция-член может быть определена в определении класса, в этом случае это встроенная функция-член, ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...