何时在null实例上调用成员函数会导致C++ 11中的未定义行为?

hel*_*ami 3 c++ null-pointer undefined-behavior language-lawyer c++11

可能重复:
何时在null实例上调用成员函数会导致未定义的行为?

我只是用一个很好的答案来阅读这个问题:什么时候在null实例上调用成员函数会导致未定义的行为?

基本上,下面的代码是未定义的行为吗?

struct foo { static void bar() { } };
foo *p = nullptr;
p->bar();
Run Code Online (Sandbox Code Playgroud)

根据链接的帖子,这可以用不同的方式解释,一个是UB,一个不是.

在C++ 0x中,从n3126开始,模糊性仍然存在

这仍然适用于最终的C++ 11吗?

Mar*_*k B 5

您链接的问题清楚地表明,无论是对标准的严格解释还是弱解释,您显示的代码都是未定义的行为.模糊性(可能)仅存在于静态函数中(并且您的问题特指非静态函数).

编辑:模糊性仍然在N33372012-01-16日期,但我没有最终标准的副本.基于该问题中的评论,看起来问题232的解决方案似乎从未成为标准,显然是因为措辞过于强烈,无法使其成为编译时概念,而不是预期的未定义行为.