In "The D programming language" chapter 5.9.1 Pseudo Members Andrei says that D rewrites a.fun(b,c,d) as fun(a,b,c,d) if fun is not a member of a's type. In the following example this is working for arrays only (T[]), but not for user defined class A. Are pseudo members going to be implemented for user defined types eventually? Or is it considered a "hack" for arrays only?

class A {
    @property int length() { return 0; }
}

@property bool empty(T)(T a) { return a.length == 0; }

unittest {
    int[] array;
    array.empty;

    auto obj = new A();
    obj.empty;   // Error: no property 'empty' for class 'Test.A'
}


Reply via email to