std::logical_and is a functor that performs a operator&& on two elements.
#include <algorithm> #include <cassert> #include <functional> #include <vector> int main() { //Use of C++11 initializer lists const std::vector<bool> a = { false, false, true , true }; const std::vector<bool> b = { false, true , false, true }; std::vector<bool> truth_table(4); std::transform( a.begin(), a.end(), b.begin(), truth_table.begin(), std::logical_and;<bool>()); assert(a[0] && b[0] == truth_table[0]); assert(a[1] && b[1] == truth_table[1]); assert(a[2] && b[2] == truth_table[2]); assert(a[3] && b[3] == truth_table[3]); }