this one的后续问题
我们有以下代码:
#include <iostream>
struct A
{
static int n;
};
int A::n = 5;
int main()
{
A* a; //uninitialized on purpose
std::cout << a->n; //UB?
}
这样的访问是否具有不确定的行为?一方面,不需要对象来访问静态类成员,另一方面,未初始化指针上的operator->
带来了麻烦。
注意:GCC和MSVC会在没有任何警告的情况下编译此代码,Clang抱怨未初始化的用法。 https://godbolt.org/z/Gy5fR2