| // { dg-do assemble } |
| // Origin: Gabriel Dos Reis <Gabriel.Dos-Reis@cmla.ens-cachan.fr> |
| |
| // Bug 29. We failed to verify that template argument deduction |
| // produces a valid result in nondeduce context. |
| |
| template<class T> struct Y { typedef T X; }; |
| |
| template<class T, class U> struct Base {}; |
| |
| template<class T> struct Base<T, typename T::X> {}; |
| |
| template<class T> struct Base<typename T::X, T> {}; |
| |
| template<class T, class U> struct Derived : Base <T, U> {}; |
| |
| struct A {}; |
| |
| template<class T> struct Derived<A, T> : Base< Y<T>, Y<T> > {}; |
| |
| int main() |
| { |
| Derived<A, int> d; |
| } |