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