Если вы можете отрицать предикат, вы можете использовать std :: find / std :: find_if и посмотреть, возвращает ли он конечный элемент вашей последовательности.Если нет, то он возвращает тот, который соответствует.
Вы можете адаптировать функцию с помощью std :: not1 или std :: not_equal_to, так что, комбинируя со std :: find_if, вы действительно можете сделать это, используя STL без записипетля.
bool allMatch = seq.end() == std::find_if( seq.begin(), seq.end(),
std::not_equal_to(val) );
bool allPass = seq.end() == std::find_if( seq.begin(), seq.end(),
std::not1(pred) );