Search code examples
c++built-inoverload-resolutioncandidate

Built-in operator candidates


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?


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) { ... }