¿Es posible la referencia nula?
¿Es válido este fragmento de código (y un comportamiento definido)?
int &nullReference = *(int*)0;
Tanto g ++ como clang ++ lo compilan sin previo aviso, incluso cuando se usa-Wall
, -Wextra
, -std=c++98
, -pedantic
, -Weffc++
...
Por supuesto, la referencia no es realmente nula, ya que no se puede acceder a ella (significaría desreferenciar un puntero nulo), pero podríamos verificar si es nula o no verificando su dirección:
if( & nullReference == 0 ) // null reference