www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - rvalues as ref arguments (as seen in digitalmars.D.learn)

reply bearophile <bearophileHUGS lycos.com> writes:
Sorry, moved this discussion from the learn newsgroup, because after
discussions it seems important enough.
This code doesn't work in DMD 1.046 anymore (I think it may work in DMD 1.045
and it works for sure in DMD 1.042):

struct V {
    int x;
    V opAdd(V v) { return V.init; }
}
void foo(ref V v) {}
void main() {
    foo(V.init + V.init);
}

On IRC the gentle Daniel Keep has told me this seems an undocumented change.
Both LDC and my code may need to change a bit for this.
On IRC, in another channel, Lindquist has expressed other thoughts on the topic.

Bye,
bearophile
Aug 02 2009
parent Jarrett Billingsley <jarrett.billingsley gmail.com> writes:
On Sun, Aug 2, 2009 at 11:06 AM, bearophile<bearophileHUGS lycos.com> wrote=
:
 Sorry, moved this discussion from the learn newsgroup, because after disc=
ussions it seems important enough.
 This code doesn't work in DMD 1.046 anymore (I think it may work in DMD 1=
.045 and it works for sure in DMD 1.042):
 struct V {
 =A0 =A0int x;
 =A0 =A0V opAdd(V v) { return V.init; }
 }
 void foo(ref V v) {}
 void main() {
 =A0 =A0foo(V.init + V.init);
 }

 On IRC the gentle Daniel Keep has told me this seems an undocumented chan=
ge. Both LDC and my code may need to change a bit for this.
 On IRC, in another channel, Lindquist has expressed other thoughts on the=
topic.
 Bye,
 bearophile
And I already replied on the other group: it's been reported. http://d.puremagic.com/issues/show_bug.cgi?id=3D3167
Aug 02 2009