Если вам не нужен универсальный алгоритм для разных типов контейнеров ...
Поскольку вы ищете оценку короткого замыкания, вы можете дать std :: valarray шанс. Для and
используйте valarray::min() == true
для or
, вы можете использовать std::find
, как упомянул Игорь.
Если вы знаете количество элементов, которые нужно сохранить во время компиляции, вы можете даже использовать std :: bitset:
bitset<100> container();
//... fill bitset
bool or = container.any();
bool and = container.count() == container.size();