This code:
int foo(Types...)(string a)
{
}
void main()
{
auto a = foo!(int, double)("s");
}
fails with:
dmd: template.c:798: MATCH TemplateDeclaration::deduceFunctionTemplateMatch(Loc, Objects*, Expression*, Expressions*, Objects*): Assertion `i < parameters->dim' failed.
Adding a return 0; inside foo fixes the problem. The compiler should issue an error message giving information about what went wrong.