Does C++ standard allow extern
keyword on definition of static data members and member functions (provided that linkage matches) ? For example:
struct A
{
static int a; // external linkage
void f(); // external linkage
};
extern int A::a;
extern void A::f() {}
The extern
keyword is not allowed as a storage class specifier on class members. From [dcl.stc]/5:
[...] The
extern
specifier cannot be used in the declaration of class members or function parameters. [...]
Moreover, definitions are declarations, cf. [basic.def]/2:
A declaration is a definition unless [rules].
Therefore, the extern
keyword is not allowed as a storage class specifier on any form of class member declaration, whether on the first declaration that's part of the class definition or on subsequent declarations that are part of out-of-line member definitions.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With