What is the fastest way to check whether a class reference is an instance of a bottom equal to any in a set of classes? My current try is something like

class C {}

class X : C {}
class Y : C {}
class Z : C {}
...

bool pred(scope const Object object)
{
    return (cast(const(X))object ||
            cast(const(Y))object ||
            cast(const(Z))object ||
            ...);
}

or is it better to switch on the non-scoped (via some existing string-to-string
function `unscoped`) part of the `typeid(object).name` like

bool pred(scope const Object object)
{
    const name = typeid(object).name.unscope;
    import std.algorithm.comparison : among;
    return name.among!(X.stringof,
                       Y.stringof,
                       Z.stringof,
                       ...);
}

?

Reply via email to