I am confused by the following sentence in our lectures
By way of Functions of the Name
operator@
the named operator @ (excluding = () [] ? : . -> .* ::) can be overloaded for datatypes that have not been 'built in'.
I realize that the operator @ refers to the likes of '+ - * / ^ ...etc', and I understand how and why these are overloaded. But I am annoyed by the "(excluding = () [] ? : . -> .* ::)" part that is mentioned above. What is meant by it, and why are those said operators excluded?
I mean I declare
something operator+(something a, something b)
and I do not see a big difference in the way I declare
something operator[] (something c)
It is said that the likes of [], (), -> and = can only be overloaded with member functions, but the operator +
that I mentioned above is also only overloaded via a member function, is it not?