3 template <class T = int> struct policy {
4 typedef int unnecessary;
7 template <class Policy> struct A {
9 typedef typename Policy::unnecessary unused;
12 template <class T> struct S {
14 typedef typename A<T>::type unused;
17 template <class, class T> typename S<T>::type foo();
18 template <class> S<policy<> >::type foo();
20 template <typename T> int def(T);
21 const int i = def(foo<int>);