diff --git a/parallel_hashmap/phmap_base.h b/parallel_hashmap/phmap_base.h index 5705970..bc9a7d4 100644 --- a/parallel_hashmap/phmap_base.h +++ b/parallel_hashmap/phmap_base.h @@ -622,83 +622,85 @@ namespace phmap { namespace base_internal { namespace { -template + #ifdef PHMAP_HAVE_EXCEPTIONS -[[noreturn]] void Throw(const T& error) { - throw error; -} + #define PHMAP_THROW_IMPL(e) throw e #else -[[noreturn]] void Throw(const T&) { - std::abort(); -} + #define PHMAP_THROW_IMPL(e) std::abort() #endif } // namespace static inline void ThrowStdLogicError(const std::string& what_arg) { - Throw(std::logic_error(what_arg)); + PHMAP_THROW_IMPL(std::logic_error(what_arg)); } static inline void ThrowStdLogicError(const char* what_arg) { - Throw(std::logic_error(what_arg)); + PHMAP_THROW_IMPL(std::logic_error(what_arg)); } static inline void ThrowStdInvalidArgument(const std::string& what_arg) { - Throw(std::invalid_argument(what_arg)); + PHMAP_THROW_IMPL(std::invalid_argument(what_arg)); } static inline void ThrowStdInvalidArgument(const char* what_arg) { - Throw(std::invalid_argument(what_arg)); + PHMAP_THROW_IMPL(std::invalid_argument(what_arg)); } static inline void ThrowStdDomainError(const std::string& what_arg) { - Throw(std::domain_error(what_arg)); + PHMAP_THROW_IMPL(std::domain_error(what_arg)); } static inline void ThrowStdDomainError(const char* what_arg) { - Throw(std::domain_error(what_arg)); + PHMAP_THROW_IMPL(std::domain_error(what_arg)); } static inline void ThrowStdLengthError(const std::string& what_arg) { - Throw(std::length_error(what_arg)); + PHMAP_THROW_IMPL(std::length_error(what_arg)); } static inline void ThrowStdLengthError(const char* what_arg) { - Throw(std::length_error(what_arg)); + PHMAP_THROW_IMPL(std::length_error(what_arg)); } static inline void ThrowStdOutOfRange(const std::string& what_arg) { - Throw(std::out_of_range(what_arg)); + PHMAP_THROW_IMPL(std::out_of_range(what_arg)); } static inline void ThrowStdOutOfRange(const char* what_arg) { - Throw(std::out_of_range(what_arg)); + PHMAP_THROW_IMPL(std::out_of_range(what_arg)); } static inline void ThrowStdRuntimeError(const std::string& what_arg) { - Throw(std::runtime_error(what_arg)); + PHMAP_THROW_IMPL(std::runtime_error(what_arg)); } static inline void ThrowStdRuntimeError(const char* what_arg) { - Throw(std::runtime_error(what_arg)); + PHMAP_THROW_IMPL(std::runtime_error(what_arg)); } static inline void ThrowStdRangeError(const std::string& what_arg) { - Throw(std::range_error(what_arg)); + PHMAP_THROW_IMPL(std::range_error(what_arg)); } static inline void ThrowStdRangeError(const char* what_arg) { - Throw(std::range_error(what_arg)); + PHMAP_THROW_IMPL(std::range_error(what_arg)); } static inline void ThrowStdOverflowError(const std::string& what_arg) { - Throw(std::overflow_error(what_arg)); + PHMAP_THROW_IMPL(std::overflow_error(what_arg)); } + static inline void ThrowStdOverflowError(const char* what_arg) { - Throw(std::overflow_error(what_arg)); + PHMAP_THROW_IMPL(std::overflow_error(what_arg)); } static inline void ThrowStdUnderflowError(const std::string& what_arg) { - Throw(std::underflow_error(what_arg)); + PHMAP_THROW_IMPL(std::underflow_error(what_arg)); } + static inline void ThrowStdUnderflowError(const char* what_arg) { - Throw(std::underflow_error(what_arg)); + PHMAP_THROW_IMPL(std::underflow_error(what_arg)); +} + +static inline void ThrowStdBadFunctionCall() { + PHMAP_THROW_IMPL(std::bad_function_call()); +} + +static inline void ThrowStdBadAlloc() { + PHMAP_THROW_IMPL(std::bad_alloc()); } - -static inline void ThrowStdBadFunctionCall() { Throw(std::bad_function_call()); } - -static inline void ThrowStdBadAlloc() { Throw(std::bad_alloc()); } } // namespace base_internal } // namespace phmap