연산자 시그니처는 원본을 바꾸는가에서 갈라진다

같은 operator 문법이라도 읽기 전용, 상태 변경, 증감, 이동 대입은 반환 타입과 const, noexcept 선택이 다릅니다.

새 값 생성
T operator+(const T& rhs) const
원본을 보존하므로 const 멤버 함수가 자연스럽습니다.
누적 변경
T& operator+=(const T& rhs)
현재 객체를 바꾸고 연쇄 사용을 위해 자기 참조를 반환합니다.
비교
bool operator==(const T& rhs) const noexcept
상태를 읽기만 하며 예외가 없다면 noexcept가 자연스럽습니다.
이동 대입
T& operator=(T&& rhs) noexcept
자원을 넘겨받고 원본을 유효한 빈 상태로 남깁니다.
선택 순서: 원본을 보존하면 값 반환과 const, 원본을 바꾸면 참조 반환, 이동 자원 정리는 noexcept 가능성을 먼저 봅니다.