Code: Select all
std::any_of(v.begin(), v.end(), f);erfüllt
Code: Select all
std::find_if(v.begin(), v.end(), f);Aber nehmen wir an, ich habe std::optional g(T)
Ich möchte das erste Ergebnis des Prädikats g erhalten, das auf [v.begin(), v.end()) angewendet wird, wobei das Ergebnis has_value() (auch bekannt als „ist“) ist stimmt, stimmt).
Ich habe es ungefähr so geschrieben:
Code: Select all
template
auto first_true(Iterator b, Iterator e, Callable && op) {
static_assert(static_cast(ResultT{}) == false,
"The default-constructed value returned by Callable must be convertible to boolean and evaluate to 'false'");
ResultT res{};
for (b; b != e; b++) {
res = op(*b);
if (res) return res;
}
return res;
};
Gibt es eine Standard- oder Boost-Bibliotheksfunktion, die den ersten „wahren“ Wert zurückgibt, der vom Prädikat zurückgegeben wird?
Mobile version