Why can some operators only be overloaded as member functions, other as non-member \"free\" functions and the rest of them as both?
What is the rationale behind thos
Because you can't modify the semantics of primitive types. It wouldn't make sense to define how operator= works on an int, how to deference a pointer, or how an array access works.
operator=
int