On Thursday, 19 January 2017 at 02:25:44 UTC, Adam D. Ruppe wrote:
On Thursday, 19 January 2017 at 02:15:04 UTC, rikki cattermole wrote:
On 19/01/2017 3:08 PM, Ignacious wrote:

class Y
{
   int y;
   alias y this;
}

class X
{
   Y[] x;
   alias x this;
}

This should not fail:

X x = new X;
x ~= 3;


Yes, it should fail. 3 is not implicitly convertible to Y under any circumstance. D does not support implicit constructors.

alias this only works if you ALREADY HAVE a Y, then it will implicitly convert Y to int. It will never go the other way around.

Huh?

But this is alias this, the whole point of alias this is to treat the type as as the alias?

You are saying it basically only works one way, seems to make alias this quite useless(50% at least). Is there any real reason why this doesn't work?

X x;
Y y;
y = 3;

x ~= y; works fine
x ~= 3; fails.

Yet, logically, 3 is convertible to Y(3rd line above) and Y is appendable to X.

Seems to me that D simply hasn't added the logic to handle the case for implicit construction for alias this, why not add it?

Reply via email to