1 // RUN: %clang_cc1 -fsyntax-only -verify %s 2 // expected-no-diagnostics 3 4 extern int array[1]; 5 6 template <typename> 7 class C { 8 enum { D }; 9 public: foo1()10 template <typename A> void foo1() { 11 extern int array[((int)C<A>::k > (int)D) ? 1 : -1]; 12 } 13 }; 14 15 template<> 16 class C<int> { 17 public: 18 const static int k = 2; 19 }; 20 foo2()21void foo2() { 22 C<char> c; 23 c.foo1<int>(); 24 } 25 26 template<int n> foo3()27void foo3() { 28 extern int array[n ? 1 : -1]; 29 } 30 foo4()31void foo4() { 32 foo3<5>(); 33 } 34