From aaa432bc82d224955ebcbfaa67373b1d869e725c Mon Sep 17 00:00:00 2001 From: Ivan Maidanski Date: Wed, 19 Apr 2023 09:02:29 +0300 Subject: Fix 'C++17 does not allow dynamic exc spec' warn if GC_NO_INLINE_STD_NEW (fix of commit 17364f061) * gc_cpp.cc: Do not include directly. * gc_cpp.cc [!GC_INCLUDE_NEW] (GC_INCLUDE_NEW): Define macro. * gc_cpp.cc (GC_DECL_NEW_THROW): Move definition to gc_cpp.h. * include/gc/gc_cpp.h [!GC_NO_INLINE_STD_NEW && (_MSC_VER || __DMC__ || (__BORLANDC__ || __CYGWIN__ || __CYGWIN32__ || __MINGW32__ || __WATCOMC__) && !GC_BUILD && !GC_NOT_DLL)] (GC_DECL_INLINE_NEW_THROW): Do not define. * include/gc/gc_cpp.h [GC_NEW_DELETE_NEED_THROW && !(__cplusplus>=201703L || _MSVC_LANG>=201703L) && !GC_INCLUDE_NEW] (GC_DECL_NEW_THROW): Define to empty. * include/gc/gc_cpp.h [!GC_NO_INLINE_STD_NEW && (_MSC_VER || __DMC__ || (__BORLANDC__ || __CYGWIN__ || __CYGWIN32__ || __MINGW32__ || __WATCOMC__) && !GC_BUILD && !GC_NOT_DLL)] (operator new, operator new[]): Replace GC_DECL_INLINE_NEW_THROW attribute to GC_DECL_NEW_THROW. --- gc_cpp.cc | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) (limited to 'gc_cpp.cc') diff --git a/gc_cpp.cc b/gc_cpp.cc index 82d93c51..1f25ce4e 100644 --- a/gc_cpp.cc +++ b/gc_cpp.cc @@ -33,8 +33,9 @@ built-in "new" and "delete". #define GC_DONT_INCL_WINDOWS_H #include "gc/gc.h" -#include // for std, bad_alloc; precedes include of gc_cpp.h - +#ifndef GC_INCLUDE_NEW +# define GC_INCLUDE_NEW +#endif #include "gc/gc_cpp.h" #if !(defined(_MSC_VER) || defined(__DMC__)) || defined(GC_NO_INLINE_STD_NEW) @@ -46,16 +47,6 @@ built-in "new" and "delete". # define GC_ALLOCATOR_THROW_OR_ABORT() throw std::bad_alloc() # endif -# ifndef GC_NEW_DELETE_NEED_THROW -# define GC_DECL_NEW_THROW /* empty */ -# elif __cplusplus >= 201703L || _MSVC_LANG >= 201703L - // The "dynamic exception" syntax had been deprecated in C++11 - // and was removed in C++17. -# define GC_DECL_NEW_THROW noexcept(false) -# else -# define GC_DECL_NEW_THROW throw(std::bad_alloc) -# endif // GC_NEW_DELETE_NEED_THROW - void* operator new(GC_SIZE_T size) GC_DECL_NEW_THROW { void* obj = GC_MALLOC_UNCOLLECTABLE(size); if (0 == obj) -- cgit v1.2.1