Is there a more elegant way of testing T for multiple types?
ag0aep6g via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sat Jun 18 07:42:55 PDT 2016
On 06/18/2016 04:37 PM, Gary Willoughby wrote:
> Here I'm testing T is either a class or interface:
>
> void foo(T)(T bar) if (is(T == class) || is(T == interface))
> {
> ...
> }
>
> Is there a more elegant way of testing T for multiple types? Because it
> doesn't scale well if I need to add more.
>
> I would love to use something like this:
>
> void foo(T)(T bar) if (T in [class, interface])
> {
> ...
> }
>
> Is something like this currently possible using type tuples?
There's std.meta.staticIndexOf [1]. Use it like so:
void foo(T)(T bar) if (staticIndexOf!(T, int, float) >= 0) { ... }
Doesn't work with `class` or `interface`, though, because those are not
types.
[1] https://dlang.org/phobos/std_meta.html#.staticIndexOf
More information about the Digitalmars-d-learn
mailing list