// RUN: %clang_cc1 -fsyntax-only -verify %s | |
// expected-no-diagnostics | |
template<typename T> struct X1 { }; | |
template<typename T> | |
struct X0 { | |
typedef int size_type; | |
typedef T value_type; | |
size_type f0() const; | |
value_type *f1(); | |
X1<value_type*> f2(); | |
}; | |
template<typename T> | |
typename X0<T>::size_type X0<T>::f0() const { | |
return 0; | |
} | |
template<typename U> | |
typename X0<U>::value_type *X0<U>::f1() { | |
return 0; | |
}; | |
template<typename U> | |
X1<typename X0<U>::value_type*> X0<U>::f2() { | |
return 0; | |
}; |