[class.mfct] (original) (raw)

11 Classes [class]

11.4 Class members [class.mem]

11.4.2 Member functions [class.mfct]

If a member function is attached to the global module and is defined ([dcl.fct.def]) in its class definition, it is inline ([dcl.inline]).

[Note 1:

A member function is also inline if it is declaredinline, constexpr, or consteval.

— _end note_]

[Example 1: struct X { typedef int T;static T count;void f(T);};void X::f(T t = count) { }

The definition of the member function f of class X inhabits the global scope; the notation X​::​f indicates that the function fis a member of class X and in the scope of class X.

In the function definition, the parameter type T refers to the typedef member T declared in class X and the default argument count refers to the static data member countdeclared in class X.

— _end example_]

Member functions of a local class shall be defined inline in their class definition, if they are defined at all.

[Note 2:

A member function can be declared (but not defined) using a typedef for a function type.

The resulting member function has exactly the same type as it would have if the function declarator were provided explicitly, see [dcl.fct] and [temp.arg].

[Example 2: typedef void fv();typedef void fvc() const;struct S { fv memfunc1; void memfunc2(); fvc memfunc3; }; fv S::* pmfv1 = &S::memfunc1; fv S::* pmfv2 = &S::memfunc2; fvc S::* pmfv3 = &S::memfunc3; — _end example_]

— _end note_]