From da3aaffcbb202ac492e7643fc0b191eca1931ab3 Mon Sep 17 00:00:00 2001 From: "Michael J. Spencer" Date: Sat, 4 Dec 2010 00:32:24 +0000 Subject: Support/SystemError: Make error_category and error_code auto-bool-conversion-safe. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120869 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Support/system_error.h | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'include/llvm/Support/system_error.h') diff --git a/include/llvm/Support/system_error.h b/include/llvm/Support/system_error.h index 9d4a8b721e..40f5b3cd7f 100644 --- a/include/llvm/Support/system_error.h +++ b/include/llvm/Support/system_error.h @@ -708,8 +708,12 @@ public: const error_category& category() const {return *_cat_;} std::string message() const; - // explicit - operator bool() const {return _val_ != 0;} + typedef void (*unspecified_bool_type)(); + static void unspecified_bool_true() {} + + operator unspecified_bool_type() const { // true if error + return _val_ == 0 ? 0 : unspecified_bool_true; + } }; inline error_condition make_error_condition(errc _e) { @@ -767,8 +771,12 @@ public: std::string message() const; - // explicit - operator bool() const {return _val_ != 0;} + typedef void (*unspecified_bool_type)(); + static void unspecified_bool_true() {} + + operator unspecified_bool_type() const { // true if error + return _val_ == 0 ? 0 : unspecified_bool_true; + } }; inline error_code make_error_code(errc _e) { -- cgit v1.2.3