// { dg-options "-std=gnu++0x" } template struct Tuple { }; template void f(Types&...); template void g(Tuple, Tuple); void h(int x, float& y) { const int z = x; f(x, y, z); // Types is deduced to int, const int, float g(Tuple(), Tuple()); // Types1 is deduced to short, int long // Types2 is deduced to float, double }