This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Volatile MEMs in statement expressions and functions inlined as trees
- From: Alexandre Oliva <aoliva at redhat dot com>
- To: Linus Torvalds <torvalds at transmeta dot com>
- Cc: Gabriel Dos Reis <gdr at codesourcery dot com>, Richard Henderson <rth at redhat dot com>, <gcc-patches at gcc dot gnu dot org>
- Date: 14 Dec 2001 17:49:11 -0200
- Subject: Re: Volatile MEMs in statement expressions and functions inlined as trees
- Organization: GCC Team, Red Hat
- References: <Pine.LNX.4.33.0112141059540.2957-100000@penguin.transmeta.com>
On Dec 14, 2001, Linus Torvalds <torvalds@transmeta.com> wrote:
> I already gave the simple example of the obvious "pp = &(p+1)" etc.
Except that this is not legal C++, since (p+1) is not an lvalue, and
`&' can only be applied to lvalues.
> Does C++ have some magic special cases? It sure as hell does.
There are at least two I can think of right now: one is when an object
is returned by value but it can still be used for a method invocation,
as in the example I posted. The other is when an rvalue is passed as
an argument, be it by value or by reference. In either case, the
argument or the temporary whose reference is passed is
copy-constructed from the rvalue, and the copy constructor takes the
rvalue as argument by reference, thus you can get its address.
--
Alexandre Oliva Enjoy Guarana', see http://www.ic.unicamp.br/~oliva/
Red Hat GCC Developer aoliva@{cygnus.com, redhat.com}
CS PhD student at IC-Unicamp oliva@{lsd.ic.unicamp.br, gnu.org}
Free Software Evangelist *Please* write to mailing lists, not to me