DIP66 - Multiple alias this

IgorStepanov via Digitalmars-d digitalmars-d at puremagic.com
Fri Oct 10 16:23:27 PDT 2014


On Friday, 10 October 2014 at 22:50:25 UTC, Walter Bright wrote:
> 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.
So it is.


More information about the Digitalmars-d mailing list