Załóżmy, że mam std::tuple
:Jak mogę sprawdzić, czy element istnieje w krotce?
std::tuple<Types...> myTuple;
// fill myTuple with stuff
Teraz chcę znaleźć, jeśli func
Zwraca true dla każdego elementu w lambda, gdzie func
pewne lambda, np
auto func = [](auto&& x) -> bool { return someOperation(x); }
Jak mogę zrobić to? Zauważ, że Types...
może być duży, więc nie chcę iterować ponad wszystkich elementów za każdym razem.
Możesz [rozpakować tup le do wywoływania funkcji variadic-template] (http://stackoverflow.com/questions/687490/how-do-i-expand-a-tuple-into-variadic-template-functions-arguments), które sprawdzają każdy argument. –
Wydaje się być duplikatem [tego] (http://stackoverflow.com/questions/1198260/iterate-over-tuple). – m8mble
@ m8mble Dodałem linię, aby podkreślić, dlaczego jest inaczej (w zasadzie jest to różnica między 'for_each' i' any_of' - zatrzymanie na elemencie, gdy go znajdziesz). – arman