逆参照された「オブジェクト」に実際にアクセスしない場合、null ポインターの逆参照はまだ未定義ですか?
int* p = 0;
int& r = *p; // undefined?
int* q = &*p; // undefined?
もう少し実用的な例: null ポインターを逆参照して、オーバーロードを区別できますか?
void foo(Bar&);
void foo(Baz&);
foo(*(Bar*)0); // undefined?
さて、参照例は、標準に従って間違いなく未定義の動作です。
そのような参照を作成する唯一の方法は、未定義の動作を引き起こすnull ポインターを逆参照することによって取得された「オブジェクト」にバインドすることであるため、null 参照は明確に定義されたプログラムには存在できません。
残念ながら、強調された部分はあいまいです。未定義の動作を引き起こすのはバインディング部分ですか、それとも逆参照部分で十分ですか?