1 // RUN: %clang_cc1 -fsyntax-only -verify %s 2 3 template<typename T> struct X1 { }; 4 5 template<typename T> 6 struct X0 { 7 typedef int size_type; 8 typedef T value_type; 9 10 size_type f0() const; 11 value_type *f1(); 12 X1<value_type*> f2(); 13 }; 14 15 template<typename T> 16 typename X0<T>::size_type X0<T>::f0() const { 17 return 0; 18 } 19 20 template<typename U> 21 typename X0<U>::value_type *X0<U>::f1() { 22 return 0; 23 }; 24 25 template<typename U> 26 X1<typename X0<U>::value_type*> X0<U>::f2() { 27 return 0; 28 }; 29