30 template <
typename F,
typename T>
31 F both(F first, F second) {
32 return [first, second](
const T& o) {
return first(o) && second(o); };
35 template <
typename F,
typename T>
36 F one_of(F first, F second) {
37 return [first, second](
const T& o) {
return first(o) && second(o); };
40 template <
typename F,
typename T>
41 F all_of(std::vector<F> fs) {
42 return [fs](
const T& o) {
52 template <
typename F,
typename T>
53 F any_of(std::vector<F> fs) {
54 return [fs](
const T& o) {