Вопрос такой: что (концептуально) мешает добавить в стандартную библиотеку что-то такое:
namespace std {
template <typename Container, typename UnaryPredicate>
bool all_of(const Container& c, UnaryPrecidate p) {
return all_of(c.begin(), c.end(), p);
}
}
Да, я понимаю, что данная версия не такая гибкая как с итераторами, однако на моей практике 90% случаев используется для всего контейнера. А добавление таких функций позволило бы писать более аккуратный код:
std::all_of(container.begin(), container.end(), [] (const T &t) { return isOk(t); }
// vs
std::all_of(container, [] (const T &t) { return isOk(t); });