Мне интересно, что говорит о коде С++:
int* ptr = NULL;
int& ref = *ptr;
int* ptr2 = &ref;
На практике результат состоит в том, что ptr2 является NULL, но мне интересно, это просто деталь реализации или это хорошо определено в стандарте? 
В разных случаях разыменование указателя NULL должно приводить к сбою, но здесь я разыгрываю его, чтобы получить ссылку, которая реализуется компилятором в качестве указателя, поэтому на самом деле нет никакого разыменования NULL.
