Daily bit(e) of C++ | std::logical_and, std::logical_or, std::logical_not
Daily bit(e) of C++ #433, Function objects wrapping logical operators: std::logical_and, std::logical_or and std::logical_not.
The three function objects std::logical_and, std::logical_or and std::logical_not model the functionality of the corresponding logical operators && (and), || (or), ! (not).
Note that the arguments of a function call are all evaluated before the function is called in an unspecified order. This contrasts the short-circuit evaluation of && and || operators.