// General test for operator overloading permissiveness. // Build don't link: // Special g++ Options: typedef __SIZE_TYPE__ size_t; struct A { int operator?:(int a, int b); // WARNING - static int operator()(int a); // ERROR - must be nonstatic static int operator+(A,A); // ERROR - must be nonstatic int operator+(int a, int b = 1); // ERROR - two errors on this line int operator++(char); // ERROR - must take 'int' void operator delete (void *); void operator delete (void *, unsigned long); }; struct B { void * operator new (size_t, void *); int operator++(int = 0); int operator+ (int); void operator()(); char * operator[](int); B * operator->(); }; int operator-(int a, int b); // ERROR - no class argument void * operator new (A a); // ERROR - invalid first argument void operator delete (A a); // ERROR - ditto char * operator char * (int); // ERROR - return value, nonmember