为什么 std::clamp 改变了 C++20 中的比较方式?
Why std::clamp changed how comparison is done in C++20?
关于 std::clamp(
不采用自定义比较器的第一次重载的 C++ 参考有一个有趣的注释。
Uses operator< (until C++20) std::less<> (since C++20) to compare the
values.
我在 cppreference 上找到的就是这个(大约 std::less
),但这似乎是无用的动机,因为“大多数”(所有)实现都知道如何比较指针。
A specialization of std::less for any pointer type yields the
implementation-defined strict total order, even if the built-in <
operator does not.
这只是一个wording clarification,它不会改变算法的任何含义。
关于 std::clamp(
不采用自定义比较器的第一次重载的 C++ 参考有一个有趣的注释。
Uses operator< (until C++20) std::less<> (since C++20) to compare the values.
我在 cppreference 上找到的就是这个(大约 std::less
),但这似乎是无用的动机,因为“大多数”(所有)实现都知道如何比较指针。
A specialization of std::less for any pointer type yields the implementation-defined strict total order, even if the built-in < operator does not.
这只是一个wording clarification,它不会改变算法的任何含义。