// { dg-do assemble } template struct S {}; template void foo(S); template void baz(S); template void fun(S, S); void bar() { foo<5>(S<4>()); // OK - 4 is 5 - 1. baz(S()); // OK fun(S<4>(), S<8>()); // OK - deduce J from first argument. }