#include template bool anyOf(UnaryPredicate p, T a) { return p(a); } template bool anyOf(UnaryPredicate p, T a , Args... args) { return p(a) || anyOf(p,args...); } template bool allOf(UnaryPredicate p, T a) { return p(a); } template bool allOf(UnaryPredicate p, T a , Args... args) { return p(a) && allOf(p,args...); } template bool noneOf(UnaryPredicate p, T a) { return not(p(a)); } template bool noneOf(UnaryPredicate p, T a , Args... args) { return not(p(a)) && noneOf(p,args...); } int main(){ std::cout << std::boolalpha << std::endl; std::cout << "anyOf([](int x){return x < 0;},1,2,3,4,5)= " << anyOf([](int x){return x < 0;},1,2,3,4,5) << std::endl; std::cout << "anyOf([](int x){return x%2 == 0;},1,2,3,4,5)= " << anyOf([](int x){return x%2 == 0;},1,2,3,4,5) << std::endl; std::cout << "anyOf([](bool b){return b == true;},true,false,true)= " << anyOf([](bool b){return b == true;},true,false,true) << std::endl; std::cout << std::endl; std::cout << "allOf([](int x){return x < 0;},1,2,3,4,5)= " << allOf([](int x){return x < 0;},1,2,3,4,5) << std::endl; std::cout << "allOf([](int x){return x%2 == 0;},1,2,3,4,5)= " << allOf([](int x){return x%2 == 0;},1,2,3,4,5) << std::endl; std::cout << "allOf([](bool b){return b == true ;},true,false,true)= " << allOf([](bool b){return b == true ;},true,false,true) << std::endl; std::cout << std::endl; std::cout << "noneOf([](int x){return x < 0;},1,2,3,4,5)= " << noneOf([](int x){return x < 0;},1,2,3,4,5) << std::endl; std::cout << "noneOf([](int x){return x%2 == 0;},1,2,3,4,5)= " << noneOf([](int x){return x%2 == 0;},1,2,3,4,5) << std::endl; std::cout << "noneOf([](bool b){return b == true ;},true, false, true)= " << noneOf([](bool b){return b == true ;},true,false,true) << std::endl; std::cout << std::endl; };