From cppreference.com
Defined in header
template<classT>structless;(until C++14)template<classT=void>structless;(since C++14)Function object for performing comparisons. The main template invokes operator< on type T.
Specializations
(C++14)
function object implementing x<y deducing parameter and return types
(class template specialization)
Member types
Type Definition result_type(deprecated in C++17)(removed in C++20)boolfirst_argument_type(deprecated in C++17)(removed in C++20)Tsecond_argument_type(deprecated in C++17)(removed in C++20)TThese member types are obtained via publicly inheriting std::binary_function<T,T,bool>.
(until C++11)Member functions
operator()
checks whether the first argument is less than the second
(public member function)std::less::operator()
booloperator()(constT&lhs,constT&rhs)const;(constexpr since C++14)Checks whether lhs is less than rhs.
Parameters
lhs, rhs - values to compare Return value
lhs<rhs.
If T is a pointer type, the result is consistent with the
implementation-defined strict total order over pointers
.
Exceptions
May throw implementation-defined exceptions.
Possible implementation
constexprbooloperator()(constT&lhs,constT&rhs)const{returnlhs<rhs;// assumes that the implementation handles pointer total order}Example
Run this code
#include<functional>template<typenameA,typenameB,typenameC=std::less<>>constexprboolfun(Aa,Bb,Ccmp=C{}){returncmp(a,b);}static_assert(fun(1,2)==true);static_assert(fun(1.0,1)==false);static_assert(fun(1,2.0)==true);static_assert(std::less<int>{}(5,5.6)==false);// 5 < 5 (warn: implicit conversion)static_assert(std::less<double>{}(5,5.6)==true);// 5.0 < 5.6static_assert(std::less<int>{}(5.6,5.7)==false);// 5 < 5 (warn: implicit conversion)static_assert(std::less{}(5,5.6)==true);// less<void>: 5.0 < 5.6intmain(){}Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR Applied to Behavior as published Correct behavior
C++98 the pointer total order might be inconsistent guaranteed to be consistent See also