1 // RUN: %clang_cc1 -fsyntax-only -verify %s 2 // expected-no-diagnostics 3 4 template <class T> struct A { 5 static T cond; 6 7 template <class U> struct B { 8 static T twice(U value) { 9 return (cond ? value + value : value); 10 } 11 }; 12 }; 13 14 int foo() { 15 A<bool>::cond = true; 16 return A<bool>::B<int>::twice(4); 17 } 18 19 namespace PR6376 { 20 template<typename T> 21 struct X { 22 template<typename Y> 23 struct Y1 { }; // 24 }; 25 26 template<> 27 struct X<float> { 28 template<typename Y> 29 struct Y1 { }; 30 }; 31 32 template<typename T, typename U> 33 struct Z : public X<T>::template Y1<U> { }; 34 35 Z<float, int> z0; 36 } 37