Container trim_by(UnaryPredicate p, const Container& xs) { internal::check_unary_predicate_for_container<UnaryPredicate, Container>(); return trim_right_by(p, drop_while(p, xs)); }
String trim_whitespace_right(const String& str) { return trim_right_by(is_whitespace<String>, str); }
Container trim_right(const T& x, const Container& xs) { return trim_right_by(is_equal_to(x), xs); }