Si no accedo realmente al "objeto" desreferenciado, ¿la desreferenciación del puntero nulo aún no está definida?¿En qué punto desreferenciar el puntero nulo se convierte en un comportamiento indefinido?
int* p = 0;
int& r = *p; // undefined?
int* q = &*p; // undefined?
Un ejemplo un poco más práctico: puedo eliminar la referencia al puntero nulo para distinguir entre las sobrecargas?
void foo(Bar&);
void foo(Baz&);
foo(*(Bar*)0); // undefined?
bien, los ejemplos de referencia son el comportamiento definitivamente no definido de acuerdo con la norma:
una referencia nula no puede existir en un programa bien definido, ya que la única manera de crear tal la referencia sería vincularla al "objeto" obtenido desreferenciando un puntero nulo, , que causa un comportamiento indefinido.
Desafortunadamente, la parte destacada es ambigua. ¿Es la parte vinculante que causa un comportamiento indefinido, o es desreferenciando parte suficiente?
[Esta pregunta cubre la información que desea.] (Http://stackoverflow.com/questions/2474018/when-does-invoking-a-member-function-on-a-null-instance-result-in- undefined-behav) – GManNickG
Esto debe ser un engaño exacto. Sé que hemos discutido esto antes. –