And here is a bit of retro C ++ 11:
#include <iostream> #include <tuple> template <class Tuple, class Lambda> bool any_of(Tuple &&tup, Lambda lambda, std::integral_constant<size_t, std::tuple_size<Tuple>::value> i) { return false; } template <class Tuple, class Lambda, class I = std::integral_constant<size_t, 0>> bool any_of(Tuple &&tup, Lambda lambda, I i = {}) { return lambda(std::forward<typename std::tuple_element<i, Tuple>::type>(std::get<i>(tup))) || any_of(std::forward<Tuple>(tup), lambda, std::integral_constant<size_t, i+1>{}); } int main() { std::cout << any_of(std::forward_as_tuple(1, 2, 3, 4), [](int&& i) { return i == 2; }) << std::endl; }
Wf
source share