如何找到元组中是否存在元素?

qua*_*ant 7 c++

假设我有一个std::tuple:

std::tuple<Types...> myTuple;
// fill myTuple with stuff
Run Code Online (Sandbox Code Playgroud)

现在我想找到是否func为lambda中的任何元素返回true,其中func有一些lambda,例如:

auto func = [](auto&& x) -> bool { return someOperation(x); }
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?请注意,这Types...可能很大,所以我不想每次迭代所有元素.

Pio*_*cki 5

#include <tuple>

std::tuple<int, char, double> myTuple{ 1, 'a', 3.14f };

bool result = std::apply([](auto&&... args) {
                           return (someOperation(decltype(args)(args)) || ...);
                         }
                       , myTuple);
Run Code Online (Sandbox Code Playgroud)

演示

  • @skypjack折叠表达式也是如此 (2认同)