DIP66 - Multiple alias this

Walter Bright via Digitalmars-d digitalmars-d at puremagic.com
Fri Oct 10 15:50:27 PDT 2014


On 10/10/2014 3:20 PM, IgorStepanov wrote:
>> The same issue also needs to be considered if A and B are structs instead and
>> B has an additional alias this to an A (the solution might also be part of a
>> fix for the cycle issue).
>>
>> - "If resultSet contains more then one candidates, the compiler raises an error."
>
> struct A
> {
>     short s;
>     alias s this;
> }
>
> struct B
> {
>     int i;
>     alias i this;
> }
>
> struct C
> {
>     A a;
>     B b;
>     alias a this;
>     alias b this;
> }
>
> long l = C(); //What do you suggest?

The rule would be if:

    long l = C.a();
    long l = C.b();

both compile, then:

    long l = C();

must be an error, even if one of C.a() or C.b() might be a "better" match. This 
is how things work for template mixins and imports.


More information about the Digitalmars-d mailing list