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