// { dg-do assemble }template<intI>structS{};template<intJ>voidfoo(S<J-1>);template<classT>voidbaz(S<sizeof(T)>);template<intJ>voidfun(S<J>,S<J*2>);voidbar(){foo<5>(S<4>());// OK - 4 is 5 - 1.baz<int>(S<sizeof(int)>());// OKfun(S<4>(),S<8>());// OK - deduce J from first argument.}