可能重复:
When does invoking a member function on a null instance result in undefined behavior?
我刚刚用一个很好的答案阅读了这个问题:When does invoking a member function on a null instance result in undefined behavior?
基本上,下面的代码是未定义的行为吗?
struct foo { static void bar() { } };
foo *p = nullptr;
p->bar();
根据链接的帖子,这可以用不同的方式解释,一个是UB而一个不是。
在C ++ 0x中,从n3126开始,模糊性仍然存在
这仍然适用于最终的C ++ 11吗?
答案 0 :(得分:5)
您链接的问题清楚地表明,无论是对标准的严格解释还是弱解释,您展示的代码都是未定义的行为。歧义(可能)仅存在于静态函数中(并且您的问题特指非静态函数)。
编辑:模糊性仍然存在于2012-01-16 N3337
,但我没有最终标准的副本。基于该问题中的评论,看起来问题232的解决方案从未成为标准,显然是因为措辞过于强烈,无法使其成为编译时的概念,而不是预期的未定义行为。