[C++-sig] Re: [Implementation] Calling wrapped functions, converters, policies
Niall Douglas
s_sourceforge at nedprod.com
Sat Sep 20 02:40:35 CEST 2003
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On 19 Sep 2003 at 10:57, David Abrahams wrote:
> > My main bugbear with GCC is it forces const temporaries. This makes
> > destructive copy construction semantics severely castrated, so much
> > so you usually must #ifdef hack in a copy constructor taking a const
> > reference just on GCC :(
> >
> > I know all the usual arguments about temporaries should be const. I
> > strongly disagree.
>
> Disagree all you want. A C++ compiler should conform to the standard
> or it isn't C++. Which compiler is correct in this regard is not open
> to debate.
My 1996 draft (which is all I can afford) doesn't say all temporaries
are const. I take it this has changed?
I don't get why this was done. Sure making temporaries created from a
conversion cast const is a good idea but temporaries returned from a
function or produced through the action of an operator are quite
different beasts - there is no danger of state changes getting lost
in an unintended way. And besides, some objects you use clearly can
have only one instance.
> > where that rope /could/ be used for something useful and no other
> > better way is available for doing it. And destructive copy
> > construction is clearly implied when it takes a non-const reference.
>
> Maybe you would be interested in a proposal I co-authored:
> http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/2002/n1377.htm
I support that document. My only concern is that using && as the
token is a bad idea because if the proposed extension to permit
taking references of references goes through, this might cause
confusion in the debugger.
I would suggest ~& is much better. The ~ says it's destructive/move
and the & denotes a reference. Much clearer.
Cheers,
Niall
-----BEGIN PGP SIGNATURE-----
Version: idw's PGP-Frontend 4.9.6.1 / 9-2003 + PGP 8.0.2
iQA/AwUBP2uiA8EcvDLFGKbPEQKTyACg+a+FutbsuDEWoCK3ejXTLRLgH1gAnixF
wT13RFnHxU+ElSNbJXcJSY6X
=CnEx
-----END PGP SIGNATURE-----
More information about the Cplusplus-sig
mailing list