Q:

std unary functions for common operations

Is there a reason to not have unary versions for the binary functions from functional?
I know is simple to create unary versions by using std::bind, but the code looks ugly:
std::find_if(std::begin(v), std::end(v), std::bind(std::less_equal<int>(), std::placeholders::_1, 42));

I think it would be much nicer to have something like:
std::find_if(std::begin(v), std::end(v), std::less_equal<int>(42));

A:

IMHO since C++11/14, lambdas make this sort of predicates superfluous?
find_if(begin(v), end(v), [](auto x){ return x <= 42; });

A:

I think there is no technical reason why your second approach should be disallowed. Prior to deprecation, std::bind2nd helper function would come very close to your desired approach:
std::find_if(std::begin(v), std::end(v), std::bind2nd(std::less_equal<int>(), 42));

Of course you can always make your own helper - it is very short:
template <typename T> auto cmp_less_equal(const T& x) {
  return std::bind(std::less_equal<T>(), std::placeholders::_1, x);
}

Now you can write
std::find_if(std::begin(v), std::end(v), cmp_less_equal(42));

using your own wrapper (demo).

A:

How about you just give a lambda a name?
const auto cmp_less_eq = [](auto x){ return x <= 42; };
const auto result = find_if(begin(v), end(v), cmp_less_eq);

