В С++ есть 4 оператора, которые могут быть перегружены, но не могут быть перегружены как автономные (ака несимвольные, автономные) функции. Этими операторами являются:
-
operator = -
operator () -
operator -> -
operator []
Этот поток прекрасно объясняет, почему запрет operator = быть несимметричной функцией. Любые идеи о трех других?