May 08, 2012 Behaviour of alias this changed | ||||
---|---|---|---|---|
| ||||
I have some code along these lines:
struct S {
short[4] data;
alias this data;
string toString() { ... }
}
...
S s;
writeln(to!string(s));
In dmd 2.059 (I believe) and earlier, this calls S.toString(). However,
in git dmd, this calls data.toString() instead.
I'm just curious about the rationale for this change, and whether
there's a way to override the toString() call so that it always calls
S.toString()?
T
--
To err is human; to forgive is not our policy. -- Samuel Adler
|
May 08, 2012 Re: Behaviour of alias this changed | ||||
---|---|---|---|---|
| ||||
Posted in reply to H. S. Teoh | On 05/08/2012 10:11 AM, H. S. Teoh wrote: > I have some code along these lines: > > struct S { > short[4] data; > alias this data; > > string toString() { ... } > } > ... > S s; > writeln(to!string(s)); > > In dmd 2.059 (I believe) and earlier, this calls S.toString(). However, > in git dmd, this calls data.toString() instead. > > I'm just curious about the rationale for this change, and whether > there's a way to override the toString() call so that it always calls > S.toString()? > > > T > Just a guess: It could be related to const-correctness improvements. Try defining S.toString() as const. Ali -- D Programming Language Tutorial: http://ddili.org/ders/d.en/index.html |
Copyright © 1999-2021 by the D Language Foundation