연산자 오버로딩은 기대 의미를 보존해야 한다

문법을 예쁘게 만드는 것보다, 기존 C++ 사용자가 예상하는 값 의미·비용·예외 규칙을 지키는지가 중요합니다.

meaning+, ==, <<의 관습적 의미와 맞춥니다.
pair==/!=, +=/+처럼 짝을 함께 설계합니다.
const읽기 연산은 상태를 바꾸지 않는다고 선언합니다.
cost큰 복사와 숨은 임시 객체가 없는지 확인합니다.
멤버 선택왼쪽 피연산자가 현재 타입이면 멤버 함수가 자연스럽습니다.
비멤버 선택왼쪽이 다른 타입이거나 대칭 변환이 필요하면 비멤버 또는 friend를 검토합니다.
최종 기준: 연산자가 짧게 보일수록 사용자는 더 강하게 기존 의미를 기대합니다. 기대를 어기면 오버로딩하지 않는 편이 낫습니다.