brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · cfc1a7a Raw
53 lines · cpp
1// RUN: %clang_cc1 -fsyntax-only -verify=expected,precxx17 %std_cxx98-14 %s2// RUN: %clang_cc1 -fsyntax-only -verify %std_cxx17- %s3template<typename T>4struct X1 {5  static void member() { T* x = 1; } // precxx17-error{{cannot initialize a variable of type 'int *' with an rvalue of type 'int'}}6};7 8template<void(*)()> struct instantiate { };9 10template<typename T>11struct X2 {12  typedef instantiate<&X1<int>::member> i; // precxx17-note{{in instantiation of}}13};14 15X2<int> x;16 17template <class T, class A> class C {18public:19  int i;20  void f(T &t) {21    T *q = new T();22    t.T::~T();23    q->~T();24    // expected-error@+2 {{'int' is not a class, namespace, or enumeration}}25    // expected-error@+1 {{no member named '~Colors' in 'Colors'}}26    q->A::~A();27    // expected-error@+2 {{no member named '~int' in 'Q'}}28    // expected-error@+1 {{no member named '~Colors' in 'Q'}}29    q->~A();30 31    delete q;32  }33};34 35class Q {36public:37  Q() {}38  ~Q() {}39};40 41enum Colors {red, green, blue};42 43C<Q, int> dummy;44C<Q, Colors> dummyColors;45int main() {46  Q qinst;47  // expected-note@+1 {{in instantiation of member function 'C<Q, int>::f' requested here}}48  dummy.f(qinst);49  // expected-note@+1 {{in instantiation of member function 'C<Q, Colors>::f' requested here}}50  dummyColors.f(qinst);51}52 53