유명한 std::swap 투스텝 있잖아 ADL 이용해 적합한 네임페이스의 swap 골라주는거

그런데 c++11부터는 std::swap이 무브시맨틱을 기본으로 하기 때문에 이동생성자와 이동대입연산자만 잘 정의해두면 바로 std::swap쓰면 된다고 알고 있음

그런데 얼마전에 c++20에서는 std::ranges::swap이라는 cpo가 들어왔다고 들음
cpo 자체는 잘 모르는데 결국 룩업 관련한 오브젝트 같은데...
암튼 std::ranges::swap 동작 자체는 c++11의 std::swap이랑 같아보이더라

그래서 궁금한건 c++20 기준으로 하위호환 고려 안하면 어떻게 쓰는게 베스트 프락티스임?