I tried things like is(T == Foo) and is(T : Foo), but those don't work. However, something like is(T!int : Foo!int) works, but is(T!U == Foo!U, U) doesn't. Any idea why is(T!U == Foo!U, U) doesn't work?
struct Foo(T) { T x; } void test(alias T)() if (__traits(isTemplate, T)) { import std.stdio: writeln; writeln("there"); } void main() { test!Foo(); }