Предположим, у меня есть std::tuple
:Как узнать, существует ли элемент в кортеже?
std::tuple<Types...> myTuple;
// fill myTuple with stuff
Теперь я хочу, чтобы найти, если func
возвращает верно для любого элемента в лямбда, где func
некоторая лямбда, например:
auto func = [](auto&& x) -> bool { return someOperation(x); }
Как я могу сделать это? Обратите внимание, что Types...
может быть большим, поэтому я не хочу перебирать все элементов каждый раз.
Вы можете распаковать tup le для вызова функции varadic-template] (http://stackoverflow.com/questions/687490/how-do-i-expand-a-tuple-into-variadic-template-functions-arguments), которые проверяют каждый аргумент. –
Кажется, это дубликат [this] (http://stackoverflow.com/questions/1198260/iterate-over-tuple). – m8mble
@ m8mble Я добавил строку, чтобы подчеркнуть, почему это другое (в основном это разница между 'for_each' и' any_of' - остановкой элемента, когда вы его находите). – arman