brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.0 KiB · c42c2a9 Raw
49 lines · cpp
1// RUN: %clang_cc1 -fsyntax-only -verify %s2 3template <class A> int x(A x) { return x++; }4int y() { return x<int>(1); }5 6namespace PR5880 {7  template<typename T>8  struct A { 9    static const int a  = __builtin_offsetof(T, a.array[5].m); // expected-error{{no member named 'a' in 'HasM'}}10  };11  struct HasM {12    float m;13  };14 15  struct ArrayOfHasM {16    HasM array[10];17  };18 19  struct B { ArrayOfHasM a; };20  A<B> x;21  A<HasM> x2; // expected-note{{in instantiation of}}22 23  template<typename T>24  struct AnonymousUnion {25    union {26      int i;27      float f;28    };29  };30 31  template<typename T>32  void test_anon_union() {33    int array1[__builtin_offsetof(AnonymousUnion<T>, f) == 0? 1 : -1];34    int array2[__builtin_offsetof(AnonymousUnion<int>, f) == 0? 1 : -1];35  }36 37  template void test_anon_union<int>();38}39 40namespace AddrOfClassMember {41  template <typename T> struct S {42    int n;43    static void f() {44      +T::n; // expected-error {{invalid use of member}}45    }46  };47  void g() { S<S<int> >::f(); } // expected-note {{in instantiation of}}48}49