Various containers in the standard library take predicates by value.
For example:
From ยง23.3.5 std::list
template <class Predicate>
void remove_if(Predicate pred);
Is there an advantage over taking predicates as forwarding references?
It might not be all that common, but potentially
the functor is heavy to copy.
Is the general reccomendation to take predicates by value, and in
that case why?