Note: The removal of binary_operator is OK, because only std::not2 requires it. Otherwise, it acheives nothing.