dependent-expr.cpp 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. // RUN: %clang_cc1 -fsyntax-only -verify %s
  2. // expected-no-diagnostics
  3. // PR5908
  4. template <typename Iterator>
  5. void Test(Iterator it) {
  6. *(it += 1);
  7. }
  8. namespace PR6045 {
  9. template<unsigned int r>
  10. class A
  11. {
  12. static const unsigned int member = r;
  13. void f();
  14. };
  15. template<unsigned int r>
  16. const unsigned int A<r>::member;
  17. template<unsigned int r>
  18. void A<r>::f()
  19. {
  20. unsigned k;
  21. (void)(k % member);
  22. }
  23. }
  24. namespace PR7198 {
  25. struct A
  26. {
  27. ~A() { }
  28. };
  29. template<typename T>
  30. struct B {
  31. struct C : A {};
  32. void f()
  33. {
  34. C c = C();
  35. }
  36. };
  37. }
  38. namespace PR7724 {
  39. template<typename OT> int myMethod()
  40. { return 2 && sizeof(OT); }
  41. }
  42. namespace test4 {
  43. template <typename T> T *addressof(T &v) {
  44. return reinterpret_cast<T*>(
  45. &const_cast<char&>(reinterpret_cast<const volatile char &>(v)));
  46. }
  47. }
  48. namespace test5 {
  49. template <typename T> class chained_map {
  50. int k;
  51. void lookup() const {
  52. int &v = (int &)k;
  53. }
  54. };
  55. }
  56. namespace PR8795 {
  57. template <class _CharT> int test(_CharT t)
  58. {
  59. int data [] = {
  60. sizeof(_CharT) > sizeof(char)
  61. };
  62. return data[0];
  63. }
  64. }
  65. template<typename T> struct CastDependentIntToPointer {
  66. static void* f() {
  67. T *x;
  68. return ((void*)(((unsigned long)(x)|0x1ul)));
  69. }
  70. };
  71. // Regression test for crasher in r194540.
  72. namespace PR10837 {
  73. typedef void t(int);
  74. template<typename> struct A {
  75. void f();
  76. static t g;
  77. };
  78. t *p;
  79. template<typename T> void A<T>::f() {
  80. p = g;
  81. }
  82. template struct A<int>;
  83. }
  84. namespace PR18152 {
  85. template<int N> struct A {
  86. static const int n = {N};
  87. };
  88. template struct A<0>;
  89. }