import std; void foo(TRange ...)(TRange range) { foreach(r; range) bar(r); } void foo(TRange ...)() { foreach(T; TRange) bar!T; } void bar(T)(T t = T.init) if (!is(T == string)) {} void main() { assert(!__traits(compiles, foo(1, ""))); // ok assert(!__traits(compiles, foo!(uint, string)())); // ok assert(!__traits(compiles, foo!(uint, string))); // fails }
*** This issue has been marked as a duplicate of issue 21451 ***