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.

Reply via email to