DIP 1016--ref T accepts r-values--Formal Assessment

Manu turkeyman at gmail.com
Wed Jan 30 18:29:37 UTC 2019

On Wed, Jan 30, 2019 at 9:20 AM Neia Neutuladh via
Digitalmars-d-announce <digitalmars-d-announce at puremagic.com> wrote:
> On Wed, 30 Jan 2019 09:15:36 -0800, Manu wrote:
> > Why are you so stuck on this case? The DIP is about accepting rvalues,
> > not lvalues...
> > Calling with 'p', an lvalue, is not subject to this DIP.
> The result of a CastExpression is an rvalue. An implicit cast is a
> compiler-inserted CastExpression. Therefore all lvalues with a potential
> implicit cast are rvalues.

But there's no existing language rule that attempts to perform an
implicit cast where an lvalue is supplied to a ref arg...?
Why is the cast being attempted? 'p' is an lvalue, and whatever that
does should remain exactly as is (ie, emits a compile error).

We could perhaps allow this for `const` args, but that feels like
separate follow-up work to me, and substantially lesser value. This
DIP doesn't want to change anything about lvalues.

More information about the Digitalmars-d-announce mailing list