标准似乎支持(下面的代码片段编译)一个静态数据成员,它具有与类本身相同的类型

Wak*_*zil 7 c++ static-members language-lawyer c++11

标准中有哪些具体内容?我发现§9.2/ 10:Non-static (9.4) data members shall not have incomplete types. In particular, a class C shall not contain a non-static member of class C, but it can contain a pointer or reference to an object of class C.但这似乎并没有直接支持手头的问题.

#include <iostream>
struct A{
    int i;
    static A a;
};

A A::a{10};

int main() {
    std::cout << A::a.i << '\n';
}
Run Code Online (Sandbox Code Playgroud)

Mik*_*our 10

C++ 11 9.4.2/2:

静态数据成员在其类定义中的声明不是定义,并且可能是除cv-qualified之外的不完整类型void.