This class provides a test type for predicates returning a type that is convertible-to-bool. It makes life reasonably difficult by disabling the address-of and comma operators, but deliberately does not overload the &&
and ||
operators, as we hope the standard will be updated to no longer require such support. Once C++11 becomes available, this class would use an explicit operator bool()
conversion operator, and explicitly supply the ==
and !=
operators, but we use the convertible-to-pointer-to-member idiom in the meantime. Implicitly defined operations fill out the API as needed.