template<class BidIt>
bool operator<(
const sub_match<BidIt>& left,
const sub_match<BidIt>& right);
template<class BidIt, class IOtraits, class Alloc>
bool operator<(
const basic_string<typename iterator_traits<BidIt>::value_type,
IOtraits, Alloc>& left,
const sub_match<BidIt>& right);
template<class BidIt, class IOtraits, class Alloc>
bool operator<(
const sub_match<BidIt>& left,
const basic_string<typename iterator_traits<BidIt>::value_type,
IOtraits, Alloc>& right);
template<class BidIt>
bool operator<(
const typename iterator_traits<BidIt>::value_type *left,
const sub_match<BidIt>& right);
template<class BidIt>
bool operator<(
const sub_match<BidIt>& left,
const typename iterator_traits<BidIt>::value_type *right);
template<class BidIt>
bool operator<(
const typename iterator_traits<BidIt>::value_type& left,
const sub_match<BidIt>& right);
template<class BidIt>
bool operator<(
const sub_match<BidIt>& left,
const typename iterator_traits<BidIt>::value_type& right);
Each template operator converts its arguments to a string type and returns true only if the converted value of left compares less than the converted value of right.