1*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only %s 2*67e74705SXin Li 3*67e74705SXin Li template<typename T, T I, int J> 4*67e74705SXin Li struct adder { 5*67e74705SXin Li enum { 6*67e74705SXin Li value = I + J, 7*67e74705SXin Li value2 8*67e74705SXin Li }; 9*67e74705SXin Li }; 10*67e74705SXin Li 11*67e74705SXin Li int array1[adder<long, 3, 4>::value == 7? 1 : -1]; 12*67e74705SXin Li 13*67e74705SXin Li namespace PR6375 { 14*67e74705SXin Li template<typename T> f()15*67e74705SXin Li void f() { 16*67e74705SXin Li enum Enum 17*67e74705SXin Li { 18*67e74705SXin Li enumerator1 = 0xFFFFFFF, 19*67e74705SXin Li enumerator2 = enumerator1 - 1 20*67e74705SXin Li }; 21*67e74705SXin Li 22*67e74705SXin Li int xb1 = enumerator1; 23*67e74705SXin Li int xe1 = enumerator2; 24*67e74705SXin Li } 25*67e74705SXin Li 26*67e74705SXin Li template void f<int>(); 27*67e74705SXin Li } 28*67e74705SXin Li 29*67e74705SXin Li namespace EnumScoping { 30*67e74705SXin Li 31*67e74705SXin Li template <typename T> 32*67e74705SXin Li class C { 33*67e74705SXin Li enum { 34*67e74705SXin Li value = 42 35*67e74705SXin Li }; 36*67e74705SXin Li }; 37*67e74705SXin Li f(int i,C<int>::C c)38*67e74705SXin Livoid f(int i, C<int>::C c) { 39*67e74705SXin Li int value; 40*67e74705SXin Li } 41*67e74705SXin Li 42*67e74705SXin Li } 43