1 // RUN: %clang_cc1 -fsyntax-only -verify %s
2 // expected-no-diagnostics
3 
4 enum Enum { val = 1 };
5 template <Enum v> struct C {
6   typedef C<v> Self;
7 };
8 template struct C<val>;
9 
10 template<typename T>
11 struct get_size {
12   static const unsigned value = sizeof(T);
13 };
14 
15 template<typename T>
16 struct X0 {
17   enum {
18     Val1 = get_size<T>::value,
19     Val2,
20     SumOfValues = Val1 + Val2
21   };
22 };
23 
24 X0<int> x0i;
25 
26 namespace rdar8020920 {
27   template<typename T>
28   struct X {
29     enum { e0 = 32 };
30 
31     unsigned long long bitfield : e0;
32 
frdar8020920::X33     void f(int j) {
34       bitfield + j;
35     }
36   };
37 }
38