DIP66 1.2 (Multiple) alias this. Continuation of work.

Steven Schveighoffer via Digitalmars-d digitalmars-d at puremagic.com
Mon Mar 30 08:04:27 PDT 2015


On 3/29/15 1:34 PM, IgorStepanov wrote:

> 1. We should reject types which use opDispatch and alias this at the
> same time.

Why? Alias this has no filter. opDispatch can use template constraints. 
It makes perfect sense to prefer opDispatch, unless it doesn't have a 
valid match, and then use alias this instead.

For example, if I wanted to wrap a type so I can instrument calls to 
'foo', I could do something like this:

struct FooWrapper(T)
{
    T t;
    alias t this;
    auto opDispatch(string s, A...)(A args) if(s == "foo") { 
writeln("calling foo"); return t.foo(args); }
}

Why is this a bad use case?

-Steve


More information about the Digitalmars-d mailing list