On Tuesday, 27 January 2015 at 08:19:46 UTC, Daniel Kozák wrote:
You can use this T:

class Parent {
    @property string typeName(this T)() {
        return T.stringof;
    }
}

class Child : Parent {
}

void main() {
    auto p = new Parent;
    auto c = new Child;

    assert(p.typeName == "Parent");
    assert(c.typeName == "Child");
}

Could 'this T' be used for a static constructor ?

-----
class Bar
{
    static T construct(this T, A...)(A a)
    {
        return new T(a);
    }
}
----

doesn't work. And similarly to the the orginal post:

-----
class Bar
{
    static typeof(this) construct(A...)(A a)
    {
        return new typeof(this)(a);
    }
}

class Foo: Bar{}
Foo foo= Foo.construct; // fail

----

construct() won't be redefined in the Bar descendants.

Reply via email to