summaryrefslogtreecommitdiff
path: root/gc_cpp.cc
diff options
context:
space:
mode:
authorIvan R <iarspider@gmail.com>2019-06-14 11:24:47 +0200
committerIvan Maidanski <ivmai@mail.ru>2019-06-22 00:33:17 +0300
commit7317fbe93bc39273e252a4f1fad9736646696df3 (patch)
treead248324d7dd1561666738780dad609da6ac006d /gc_cpp.cc
parentc00688ae11bc96506a6240122ec53b74bbad6235 (diff)
downloadbdwgc-7317fbe93bc39273e252a4f1fad9736646696df3.tar.gz
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.
Diffstat (limited to 'gc_cpp.cc')
-rw-r--r--gc_cpp.cc8
1 files changed, 7 insertions, 1 deletions
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