On Tuesday, May 08, 2012 10:57:20 H. S. Teoh wrote: > On Tue, May 08, 2012 at 01:52:14PM -0400, Jonathan M Davis wrote: > > On Tuesday, May 08, 2012 10:30:53 H. S. Teoh wrote: > > > On Tue, May 08, 2012 at 10:15:00AM -0700, Ali Çehreli wrote: > > > > 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)); > > [...] > > > > I tried that, it didn't help. Declaring string toString() const > > > {...} still has data.toString being called instead of S.toString. > > > > There's also @safe, pure, and nothrow. As I understand it, toString > > will eventually need to have all 4 of those attributes. pure doesn't > > work very well for toString yet though, since most of the > > string-related conversion functions can't be pure yet due to impure > > low level constructs that they use. > > [...] > > Yes, it would be nice to finally make toString const @safe pure and > nothrow. > > But the question still stands: what to do with the different behaviour > of alias this in git dmd?
I'd argue that what you're seeing is a bug, but it may be due in part to a partial transition to requiring toString to be const @safe pure nothrow. - Jonathan M Davis