空引用 - C++标准中的位置

dec*_*iar 2 c++ null standards pointers reference

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

在C++标准中是否有任何部分显示NULL引用是不正确的?我试图展示我的讲师(这是为了我正在评分的作业)以下表达式是未定义的行为:

AClass* ptr = 0;
AClass& ali = *ptr;
std::cout << "\n" << (AClass*) &ali << '\n';
Run Code Online (Sandbox Code Playgroud)

我看到的违规是取消引用空指针,然后引用空引用.在一个他正在使用作为一个程序正确例如,他在比较解除引用指针参考的返回:

(AClass*) &ali != (AClass*) 0
Run Code Online (Sandbox Code Playgroud)

作为对象有效性的测试.我认为这是完全未定义的行为; 我想从标准中找到一个对我的解释更具体的引用.

如果我错了,请告诉我出错的地方.

Jer*_*fin 6

§8.5.3/ 1:"声明为T&的变量,即"对类型T的引用"(8.3.2),应由类型为T的对象或函数或可由对象初始化.转换成T."

上面的代码没有使用类型T的对象或函数或可以转换为T的对象初始化引用.违反了"应该".此时,唯一的问题是它是否是未定义的行为,或者这是否符合可诊断规则,在这种情况下,编译器将需要提供错误消息.无论哪种方式,它显然是错误的.