module beard.base_of;

/// Tests if P is a superclass of C.
template BaseOf(P, C) {
    static if (is(C Unused : P))
        enum BaseOf = true;
    else
        enum BaseOf = false;
}

/// Defines a nested Eval!C template that tests if P is a superclass of C.
template BaseOf(C) {
    template Eval(P) {
        enum Eval = BaseOf!(P, C);
    }
}

// vim:ts=4 sw=4