자바 같은 애들은 Comparable 같은 거 implements 시키고 compareTo  같은 거 재정의해주면 라이브러리에 있는 정렬 메소드 같은 거 바로 쓸 수 있잖아

근데 C++도 연산자 오버로딩 해주면 똑같이 std::sort 같은 거 바로 쓸 수 있단 말임?


문제는 C++은 여러 가지 종류의 함수 정의가 있을 수 있다는 건데 가령,


bool operator<(foo_t other);

bool operator<(foo_t& other);

bool operator<(const foo_t& other);

bool operatro|<(const foo_t& other) const;


얘네는 다 다른 함수가 되버리자너

이중에서 제일 마지막 걸 오버로딩해야 std::sort가 제대로 되던데 이거 뭐가 기준인 거임?


std::sort는 제일 마지막 걸 오버로딩해야 한다 쳐도 표준 라이브러리의 다른 함수는 또 다른 연산자를 오버로딩해야 할 수 있잖아

const나 & 같은 거 붙이는 기준이 뭐야?

파라미터에 붙는 const랑 &, 함수에 붙는 const랑 noexcept 같은 거 생각하면 가능한 조합이 꽤 될 거 같은데