On 07/05/2013 02:52 AM, JS wrote:
I have a request to add to __traits to check if a method/property of a
class/struct is actually implemented or not.

interface A { void myfunc(); }

class B : A { } // myfunc not implemented
class C : A { void myfunc() { ... } // myfunc implemented

This may seem odd but I need it for conditional mixin compilation to add
in the methods when they are not implemented. A sort of default proxy,
wrapper, or composite pattern implementer. It reduces boilerplate code
significantly.

Unfortunately allMembers returns methods that are not actually
implemented or part of the class.

Something like allImmediateMembers would be useful where it only returns
the actually explicit members of the immediate class/struct that it is
used on and accomplish the same task.



Can you make A a class with default myfunc() implementation?

class A {
    void myfunc()
    {
        writeln("default myfunc");
    }
}

class B : A { }
class C : A { override void myfunc() { writeln("C.myfunc"); } }

Or, you can leave A as an interface and insert another class after it that has the default implementation:

    A
    |
ADefaults
 |    |
 B    C

Ali

Reply via email to