temporary objects are not allowed to be pass by ref anymore
Michel Fortin
michel.fortin at michelf.com
Sat Apr 25 05:15:10 PDT 2009
On 2009-04-19 15:52:02 -0400, Andrei Alexandrescu
<SeeWebsiteForEmail at erdani.org> said:
> Now onto why ref was disallowed to bind to an rvalue. This is because
> some functions take things by ref intending to change them.
True.
> Passing an rvalue is in such cases a bug.
I disagree. Function modify the temporary value, then the value is
forgotten. It's just like calling a function and ignoring the returned
value. It could be a bug, but it may not.
For instance, a function may just be performing some destructive
operation on the argument, in which case a temporary rvalue may
very-well be appropriate since you are unlikely to need the result
afterwards.
Even C++0x saw the need and added rvalue non-const reference.
<http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1690.html>
--
Michel Fortin
michel.fortin at michelf.com
http://michelf.com/
More information about the Digitalmars-d
mailing list