关于静态数据成员和成员函数定义的 extern 关键字,C++

Extern keyword on definition of static data members and member functions, C++

C++ 标准是否允许在定义静态数据成员和成员函数时使用 extern 关键字(前提是链接匹配)?例如:

struct A
{
    static int a;    // external linkage
    void f();        // external linkage
};

extern int A::a;
extern void A::f() {}

不允许 extern 关键字作为 class 成员的存储 class 说明符。来自 [dcl.stc]/5:

[...] The extern specifier cannot be used in the declaration of class members or function parameters. [...]

此外,定义是声明,cf。 [basic.def]/2:

A declaration is a definition unless [rules].

因此,extern 关键字不允许在任何形式的 class 成员声明中用作存储 class 说明符,无论是在 [=23] 的第一个声明中=] 定义或作为外联成员定义的一部分的后续声明。