From the function:
if (!(*first)) return false;
If any of the elements in the range [first, last) evaluate to false when the pointer/iterator/object is dereferenced, the function returns false. Otherwise, it returns true.
Example test code:
int main()
{
std::string sa = "abc";
std::vector<int> va = {1, 1, 1};
std::vector<int> vb = {1, 0, 2};
std::cout << std::boolalpha;
std::cout << CombinerAll()(sa.begin(), sa.end()) << std::endl;
std::cout << CombinerAll()(va.begin(), va.end()) << std::endl;
std::cout << CombinerAll()(vb.begin(), vb.end()) << std::endl;
return 0;
}
Output:
true
true
false