1 // PR c++/14912 2 // Bug: We were instantiating A<B> in order to compare it to the matching 3 // argument for C<B,B>, which fails. 4 5 template <class T> 6 struct A 7 { 8 typedef typename T::F F; 9 }; 10 11 struct B { }; 12 13 template <class T, class U = typename A<T>::F > 14 struct C 15 { 16 typename T::F f; // { dg-error "no type" } 17 }; 18 19 C<B, B> c; // { dg-message "required" } 20