http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18635
--- Comment #12 from Imre Pentek <pentek.imre at gmail dot com> 2010-11-26 17:18:26 UTC --- (In reply to comment #11) > (In reply to comment #10) > > (In reply to comment #9) > > > (In reply to comment #2) > > > > int &a = a; > > > > i don't believe this is valid code. i believe g++ should reject the > > > > code. > > > > > > I'm not convinced the compiler must reject it. EDG accepts it too. > > > > Without warning? What about clang 2.8? > > Yes, without warning (G++ at least warns) > I don't know about clang This code is as valid as unset references are valid. The standards doesn't allow 'unset' or 'extremal' references. In this way there's no point to query the reference from a yet-unset reference, as there's no such a state as unset reference. If you somehow manage to query the reference from an unset reference you actually navigated your compiler to a state which doesn't even exist. It's like division by zero to be accepted without any (runtime/compiletime) error messages/crashes. Briefly, I consider this code as invalid, as it generates a state which is invalid, and has no semantic meaning, and doesn't really exist.