diff --git a/include/dwarfs/writer/contextual_option.h b/include/dwarfs/writer/contextual_option.h index e061a5c2..06a143ca 100644 --- a/include/dwarfs/writer/contextual_option.h +++ b/include/dwarfs/writer/contextual_option.h @@ -21,6 +21,7 @@ #pragma once +#include #include #include #include @@ -91,18 +92,17 @@ class contextual_option { template bool any_is(T&& pred) const { - for (auto e : contextual_) { - if (pred(e.second)) { - return true; - } - } - return default_ && pred(*default_); + auto&& p = std::forward(pred); + return std::ranges::any_of(contextual_, p, + &decltype(contextual_)::value_type::second) || + (default_ && p(*default_)); } template void visit_contextual(T&& visitor) const { + auto&& v = std::forward(visitor); for (auto const& [ctx, val] : contextual_) { - visitor(ctx, val); + v(ctx, val); } }