1// { dg-do assemble } 2// { dg-options "" } 3// General test for operator overloading permissiveness. 4 5typedef __SIZE_TYPE__ size_t; 6 7struct A { 8 int operator?:(int a, int b); // { dg-warning "" } 9 static int operator()(int a); // { dg-error "" } must be nonstatic 10 static int operator+(A,A); // { dg-error "" } must be nonstatic 11 int operator+(int a, int b = 1); // { dg-error "" } two errors on this line 12 int operator++(char); // { dg-error "" } must take 'int' 13 void operator delete (void *); 14 void operator delete (void *, unsigned long); 15}; 16 17struct B { 18 void * operator new (size_t, void *); 19 int operator++(int = 0); 20 int operator+ (int); 21 void operator()(); 22 char * operator[](int); 23 B * operator->(); 24}; 25 26int operator-(int a, int b); // { dg-error "" } no class argument 27 28void * operator new (A a); // { dg-error "" } invalid first argument 29void operator delete (A a); // { dg-error "" } ditto 30 31char * operator char * (int); // { dg-error "" } return value, nonmember 32