On Wednesday, 3 June 2015 at 03:43:09 UTC, bitwise wrote:
I can't remember right now what the reasoning was for 'const
ref' not to take
rvalues in the first place. I think it was that you could
escape the reference,
but this isn't true anymore with DIP25 right?
The one to ask is Andrei. I can never remember all of the
details, because it has to do with the details of how it causes
problems in C++. IIRC, the problem stems from the fact that you
can no longer tell whether the parameter represents an lvalue or
a temporary. I don't know how big a deal it really is, but Andrei
is emphatic about it.
But regardless, because of how restrictive const is in D,
requiring const to have a parameter accept both lvalues and
rvalues is just too restrictive anyway. A lot of the same
developers who are insistent on having rvalue references for
efficiency are exactly the sort of developers who will avoid
const, because it's physical const and not logical const and thus
prevents stuff like caching or lazy loading.
- Jonathan M Davis