module beard.meta.child_of;

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

/// Defines a nested Eval!C template that tests if C is a subclass of P.
template ChildOf(P) {
    template Eval(C) {
        enum Eval = ChildOf!(C, P);
    }
}
// vim:ts=4 sw=4