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

参见英文答案 > About C++ classes with self reference                                    2个
标准中有哪些具体内容?我发现§9.2/ 10:非静态(9.4)数据成员不应具有不完整的类型.特别是,类C不应包含类C的非静态成员,但它可以包含指向C类对象的指针或引用,但这似乎并不直接支持手头的问题.

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

A A::a{10};

int main() {
    std::cout << A::a.i << '\n';
}
最佳答案
C 11 9.4.2 / 2:

The declaration of a static data member in its class definition is not a definition and may be of an incomplete type other than cv-qualified void.

转载注明原文:c – 标准似乎支持(下面的代码片段编译)一个与类本身具有相同类型的静态数据成员[复制] - 代码日志