1// RUN: %clang_cc1 -fsyntax-only -verify %s 2#include <stddef.h> 3 4struct A { 5 void *operator new(size_t); 6}; 7 8namespace NS { 9 void *operator new(size_t);; // expected-error {{'operator new' cannot be declared inside a namespace}} 10} 11 12static void *operator new(size_t); // expected-error {{'operator new' cannot be declared static in global scope}} 13 14struct B { 15 void operator new(size_t); // expected-error {{'operator new' must return type 'void *'}} 16}; 17 18struct C { 19 void *operator new(); // expected-error {{'operator new' must have at least one parameter}} 20}; 21 22struct D { 23 void *operator new(bool); // expected-error {{'operator new' takes type size_t}} 24}; 25 26struct E { 27 void *operator new(size_t = 0); // expected-error {{parameter of 'operator new' cannot have a default argument}} 28}; 29 30struct F { 31 template<typename T> void *operator new(size_t, int); 32}; 33 34struct G { 35 template<typename T> T operator new(size_t, int); // expected-error {{'operator new' cannot have a dependent return type; use 'void *' instead}} 36}; 37 38struct H { 39 template<typename T> void *operator new(T, int); // expected-error {{'operator new' cannot take a dependent type as first parameter; use size_t}} 40}; 41 42struct I { 43 template<typename T> void *operator new(size_t); // expected-error {{'operator new' template must have at least two parameters}} 44}; 45