1// { dg-do assemble  }
2// { dg-options "-ansi -pedantic-errors -w" }
3// GROUPS passed templates
4template <class T, class U>
5void foo(U u, T t);
6
7template <class T>
8void foo(T t);
9
10template <class T>
11struct S {};
12
13template <class T>
14void foo(const S<T>&);
15
16void bar()
17{
18  void (*fn)(double, int) =
19    (void (*)(double, int)) &foo<int>;
20  void (*fn2)(double) = foo<double>;
21  foo<int>(3, 3.0);
22  foo<int>(S<int>());
23}
24