I've always known for a fact that the Standard mandates dereferencing null
is UB. However,
(Link 1) says
p = 0; *p; is not inherently an error.
and provides a link to
(Link 2) says
*p is not an error when p is null unless the lvalue is converted to an lvalue
(I believe it's a typo and probably should read lvalue is converted to an rvalue)
Link 1 also says
char* p = 0; char *q = &*(p)
is "not undefined", which I could only read as well-defined or at least implementation-defined
Can a language lawyer provide an authoritative explanation of what's going on?