1 // RUN: %clang_cc1 -fsyntax-only -verify -fexceptions %s 2 typedef __SIZE_TYPE__ size_t; 3 4 // Operator delete template for placement new with global lookup 5 template<int I> 6 struct X0 { 7 X0(); 8 9 static void* operator new(size_t) { 10 return I; // expected-error{{cannot initialize}} 11 } 12 13 static void operator delete(void*) { 14 int *ip = I; // expected-error{{cannot initialize}} 15 } 16 }; 17 18 void test_X0() { 19 // Using the global operator new suppresses the search for a 20 // operator delete in the class. 21 ::new X0<2>; 22 23 new X0<3>; // expected-note 2{{instantiation}} 24 } 25 26 // Operator delete template for placement new[] with global lookup 27 template<int I> 28 struct X1 { 29 X1(); 30 31 static void* operator new[](size_t) { 32 return I; // expected-error{{cannot initialize}} 33 } 34 35 static void operator delete[](void*) { 36 int *ip = I; // expected-error{{cannot initialize}} 37 } 38 }; 39 40 void test_X1() { 41 // Using the global operator new suppresses the search for a 42 // operator delete in the class. 43 ::new X1<2> [17]; 44 45 new X1<3> [17]; // expected-note 2{{instantiation}} 46 } 47