enum-argument.cpp 570 B

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