sort(s.begin, s.end, less<>())和sort(s.begin, s.end, less()), sort(s.begin, s.end, less()), sort(s.begin, s.end, less())编译都能过,而且结果一样,应该是因为是和less<类型>和这个类型无关,因为没用到less<类型x> 类型x
greater<>()也可以,less也有类似的定义,在 vs2017, 2019的xstddef文件中,vs2017communit\VC\Tools\MSVC\14.14.26428\include\xstddef
// STRUCT TEMPLATE SPECIALIZATION greater
template <>
struct greater { // transparent functor for operator>
using is_transparent = int;
template <class _Ty1, class _Ty2>
constexpr auto operator()(_Ty1&& _Left, _Ty2&& _Right) const
_NOEXCEPT_COND(noexcept(static_cast<_Ty1&&>(_Left) > static_cast<_Ty2&&>(_Right))) // strengthened
-> decltype(
static_cast<_Ty1&&>(_Left) > static_cast<_Ty2&&>(_Right)) { // transparently apply operator> to operands
return static_cast<_Ty1&&>(_Left) > static_cast<_Ty2&&>(_Right);
}
};
433

被折叠的 条评论
为什么被折叠?



