Question

C++03 $13.6/1- "[...]If there is a user-written candidate with the same name and parameter types as a built-in candidate operator function, the built-in operator function is hidden and is not included in the set of candidate functions."

I am not sure about the intent of this quote from the Standard. Is it possible to define a user defined candidate function that has the same name and type as a built-in operator?

e.g. the below which is clearly wrong.

int operator+(int)

So what does this quote mean?

Was it helpful?

Solution

Just pick one of those in 13.6. Like

For every pointer or enumeration type T, there exist candidate operator functions of the form

bool operator<(T, T);
bool operator>(T, T);
bool operator<=(T, T);
bool operator>=(T, T);
bool operator==(T, T);
bool operator!=(T, T);

So

enum Kind { Evil, Good };
bool operator<(Kind a, Kind b) { ... }
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top