diff options
Diffstat (limited to 'test/SemaTemplate/typename-specifier-4.cpp')
-rw-r--r-- | test/SemaTemplate/typename-specifier-4.cpp | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/test/SemaTemplate/typename-specifier-4.cpp b/test/SemaTemplate/typename-specifier-4.cpp index 7fd88f13..0a6fef7 100644 --- a/test/SemaTemplate/typename-specifier-4.cpp +++ b/test/SemaTemplate/typename-specifier-4.cpp @@ -68,3 +68,34 @@ struct X0 { void f2(typename X0<T>::Inner<T*, T&>::type); // expected-note{{here}} void f2(typename X0<T>::template Inner<T*, T&>::type); // expected-error{{redecl}} }; + +namespace PR6236 { + template<typename T, typename U> struct S { }; + + template<typename T> struct S<T, T> { + template<typename U> struct K { }; + + void f() { + typedef typename S<T, T>::template K<T> Foo; + } + }; +} + +namespace PR6268 { + template <typename T> + struct Outer { + template <typename U> + struct Inner {}; + + template <typename U> + typename Outer<T>::template Inner<U> + foo(typename Outer<T>::template Inner<U>); + }; + + template <typename T> + template <typename U> + typename Outer<T>::template Inner<U> + Outer<T>::foo(typename Outer<T>::template Inner<U>) { + return Inner<U>(); + } +} |