How does `std::less` work?
问题 Pointer relational operators do not define a total order (§ 5.9 of the C++11 standard): If two pointers p and q of the same type point to different objects that are not members of the same object or elements of the same array or to different functions, or if only one of them is null, the results of p<q , p>q , p<=q , and p>=q are unspecified. std::less documentation says: The partial specialization of std::less for any pointer type yields a total order, even if the built-in operator< does not