On Friday, 2 August 2013 at 02:21:25 UTC, Maxim Fomin wrote:
On Thursday, 1 August 2013 at 21:56:46 UTC, John Colvin wrote:

You are asking for an "int" to be be implicitly convertable to an "A", which isn't possible.

http://dpaste.dzfl.pl/c3cce6e2

import std.stdio;


class A
{
    double x;
    @property double X() { writeln("From A.Get"); return x; }
@property double X(double v) { writeln("From A.Set"); x = v; return x; }
    alias X this;
        this(double val) { this.x = val; }
}

class B
{
        A a;
    A Y() { writeln("From B.Get"); return a; }
    A Y(A v ...) { writeln("From B.Set"); a =  v; return a; }

        this() { a = new A(0); }
}


void main()
{
        B b = new B();
        writeln(b.Y);
        b.Y = 3;
        writeln(b.Y);

        readln();
}

Ok... It doesn't work for structs though which is strange. The docs do only mention classes however.

That's not really an implicit conversion, it's an implicit contstruction. It's definitely not like alias this. (In your example the alias this is completely unused)

Does this have any bearing on the wider question? The variadic class construction syntax could be allowed for properties, with a restriction to only one argument passed.

Reply via email to