Является ли этот код кода действительным (и определенным поведением)?
int &nullReference = *(int*)0;
Оба g++ и clang++ компилируют его без предупреждения даже при использовании -Wall
, -Wextra
, -std=c++98
, -pedantic
, -Weffc++
...
Конечно, ссылка не является фактически нулевой, так как она не может быть доступна (это означало бы разыменование нулевого указателя), но мы могли бы проверить, является ли она нулевой или нет, проверив ее адрес:
if( & nullReference == 0 ) // null reference