On Mon, Dec 16, 2019 at 02:38:59PM +0000, Per Nordlöw via Digitalmars-d-learn 
wrote:
> 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 ||
>             ...);
> }
[...]

What about:

        class X {}
        class Y {}
        class Z {}

        bool pred(scope const Object object)
        {
                import std.meta : AliasSeq;

                // make this as long as you need
                alias MyClasses = AliasSeq!(X, Y, Z);

                static foreach (C; MyClasses)
                {
                        if (cast(const(C)) object) return true;
                }
                return false;
        }


T

-- 
Beware of bugs in the above code; I have only proved it correct, not tried it. 
-- Donald Knuth

Reply via email to