1 // PR c++/34950
2 
3 template <class T = int> struct policy {
4     typedef int unnecessary;
5 };
6 
7 template <class Policy> struct A {
8     typedef int type;
9     typedef typename Policy::unnecessary unused;
10 };
11 
12 template <class T> struct S {
13     typedef int type;
14     typedef typename A<T>::type unused;
15 };
16 
17 template <class, class T> typename S<T>::type         foo();
18 template <class>                   S<policy<> >::type foo();
19 
20 template <typename T> int def(T);
21 const int i = def(foo<int>);
22