It would be completely useless to make this change by itself. What not1does is a std::unary_negate<Predicate>, using predas an argument to the constructor. But the only relevant constructor std::unary_negate<Predicate>takes const Predicate &, not Predicate &&.
, std::unary_negate<Predicate> , Predicate &&? , , , rvalue . , , , , unary_negate , .