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