1// { dg-do assemble  }
2
3template <class T>
4struct S
5{
6  typedef T S_Type;
7};
8
9
10template <class T>
11void foo(typename S<T>::S_Type)
12{
13}
14
15
16template <class T>
17void foo(T)
18{
19}
20
21
22struct S2 {};
23
24void bar()
25{
26  foo(S2()); // We can't unify with the first foo, so we get the second.
27}
28