Re: Reference to myself compiles... and crashes.
Am 06.09.2011 21:33, schrieb Francis Glassborow:
On 06/09/2011 07:45, Daniel Kr?gler wrote:
Am 06.09.2011 00:20, schrieb Javier Jimenez:
The example code bellow compiles in gcc, and produces a core dump.
When I noticed the error ( int& i = i; ), I would expected two
possible compiler behaviours:
- it does not compile.
There is currently a still open core issue related to this kind of
errors, see
http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#504
No, that is a different issue and deals with:
type t=t;
Take a second look, Francis: Both the issue title and the discussion
talk about initialization of references.
No, this does not happen. A variable declaration introduces a name that
is immediately available in the initializer.
However the name being declared is NOT a variable. References are not
variables.
They are variables, this was one of the C++11 changes, see Clause 3 p6:
"A variable is introduced by the declaration of a reference other than a
non-static data member or of an object. The variable?s name denotes the
reference or object."
That cam as a bit of a surprise when I discovered it.
Variable and reference names are disjoint sets.
No longer any more!
There exist reasonable
examples where this can be useful, e.g.
void* p = &p;
Yes but that is taking an address, it is not a reference. The two cases
are different.
Yes, I agree that this was a bad example.
Greetings from Bremen,
- Daniel Kr?gler
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]