The standard library distinguishes between predicate and non-predicate versions of common algorithms. For example, std::sort() looks like this:
template< class RandomIt > void sort( RandomIt first, RandomIt last ); template< class RandomIt, class Compare > void sort( RandomIt first, RandomIt last, Compare comp );
Are there any problems writing the following?
template< class RandomIt, class Compare = std::less<void>> void sort( RandomIt first, RandomIt last, Compare comp = Compare{});
source share