Behaviour of alias this changed
Jonathan M Davis
jmdavisProg at gmx.com
Tue May 8 10:59:07 PDT 2012
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
More information about the Digitalmars-d
mailing list