// { dg-do assemble }
|
// { dg-do assemble }
|
// { dg-options "" }
|
// { dg-options "" }
|
// General test for operator overloading permissiveness.
|
// General test for operator overloading permissiveness.
|
|
|
typedef __SIZE_TYPE__ size_t;
|
typedef __SIZE_TYPE__ size_t;
|
|
|
struct A {
|
struct A {
|
int operator?:(int a, int b); // { dg-error "expected type-specifier" }
|
int operator?:(int a, int b); // { dg-error "expected type-specifier" }
|
static int operator()(int a); // { dg-error "must be a nonstatic member" }
|
static int operator()(int a); // { dg-error "must be a nonstatic member" }
|
static int operator+(A,A); // { dg-error "either a non-static member" }
|
static int operator+(A,A); // { dg-error "either a non-static member" }
|
int operator+(int a, int b = 1); // { dg-error "either zero or one" }
|
int operator+(int a, int b = 1); // { dg-error "either zero or one" }
|
int operator++(char); // { dg-error "must take 'int'" }
|
int operator++(char); // { dg-error "must take 'int'" }
|
void operator delete (void *);
|
void operator delete (void *);
|
void operator delete (void *, unsigned long);
|
void operator delete (void *, unsigned long);
|
};
|
};
|
|
|
struct B {
|
struct B {
|
void * operator new (size_t, void *);
|
void * operator new (size_t, void *);
|
int operator++(int = 0);
|
int operator++(int = 0);
|
int operator+ (int);
|
int operator+ (int);
|
void operator()();
|
void operator()();
|
char * operator[](int);
|
char * operator[](int);
|
B * operator->();
|
B * operator->();
|
};
|
};
|
|
|
int operator-(int a, int b); // { dg-error "argument of class or" }
|
int operator-(int a, int b); // { dg-error "argument of class or" }
|
|
|
void * operator new (A a); // { dg-error "first parameter" }
|
void * operator new (A a); // { dg-error "first parameter" }
|
void operator delete (A a); // { dg-error "first parameter" }
|
void operator delete (A a); // { dg-error "first parameter" }
|
|
|
char * operator char * (int); // { dg-error "return type" "ret" }
|
char * operator char * (int); // { dg-error "return type" "ret" }
|
// { dg-error "nonstatic member function" "mem" { target *-*-* } 31 }
|
// { dg-error "nonstatic member function" "mem" { target *-*-* } 31 }
|
|
|