From: Ivan R Date: Fri, 14 Jun 2019 09:24:47 +0000 (+0200) Subject: Fix 'ISO C++17 does not allow dynamic exception spec' clang-8 error X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7317fbe93bc39273e252a4f1fad9736646696df3;p=gc Fix 'ISO C++17 does not allow dynamic exception spec' clang-8 error Issue #287 (bdwgc). Before this patch, clang 8 (and -std=c++1z) fails for gc_cpp.cc. The error message produced is: ISO C++17 does not allow dynamic exception specifications. The "dynamic exception" syntax was declared deprecated in C++11 and removed in C++17. * gc_cpp.cc [!_MSC_VER && !__DMC__ && GC_NEW_DELETE_NEED_THROW && __cplusplus >= 201703L] (GC_DECL_NEW_THROW): Define to noexcept(false); add comment. --- diff --git a/gc_cpp.cc b/gc_cpp.cc index baf8ca49..16c1035f 100644 --- a/gc_cpp.cc +++ b/gc_cpp.cc @@ -53,7 +53,13 @@ GC_API void GC_CALL GC_throw_bad_alloc() { # endif # ifdef GC_NEW_DELETE_NEED_THROW -# define GC_DECL_NEW_THROW throw(std::bad_alloc) +# if __cplusplus < 201703L +# define GC_DECL_NEW_THROW throw(std::bad_alloc) +# else + // The "dynamic exception" syntax was deprecated in C++11 + // and removed in C++17. +# define GC_DECL_NEW_THROW noexcept(false) +# endif # else # define GC_DECL_NEW_THROW /* empty */ # endif