use explicit-operator-bool macro instead of safe_bool