Python has an interesting for
statement which lets you specify an else
clause.
In a construct like this one:
for i in foo:
if bar(i):
break
else:
baz()
the else
clause is executed after the for
, but only if the for
terminates normally (not by a break
).
I wondered if there was an equivalent in C++? Can I use for ... else
?
A simpler way to express your actual logic is with std::none_of
:
if (std::none_of(std::begin(foo), std::end(foo), bar))
baz();
If the range proposal for C++17 gets accepted, hopefully this will simplify to:
if (std::none_of(foo, bar)) baz();