diff --git a/include/sys/util.h b/include/sys/util.h index 00e33b31a19..1977b1e3b2a 100644 --- a/include/sys/util.h +++ b/include/sys/util.h @@ -50,7 +50,10 @@ #if defined(__cplusplus) template < class T, size_t N > -constexpr size_t ARRAY_SIZE(T(&)[N]) { return N; } +#if __cplusplus >= 201103L +constexpr +#endif /* >= C++11 */ +size_t ARRAY_SIZE(T(&)[N]) { return N; } #else /* Evaluates to number of elements in an array; compile error if not diff --git a/subsys/cpp/cpp_new.cpp b/subsys/cpp/cpp_new.cpp index ad739c1c6a7..c278ab7b9ab 100644 --- a/subsys/cpp/cpp_new.cpp +++ b/subsys/cpp/cpp_new.cpp @@ -6,6 +6,12 @@ #include +#if __cplusplus < 201103L +#define NOEXCEPT +#else /* >= C++11 */ +#define NOEXCEPT noexcept +#endif /* __cplusplus */ + void* operator new(size_t size) { return malloc(size); @@ -16,23 +22,23 @@ void* operator new[](size_t size) return malloc(size); } -void operator delete(void* ptr) noexcept +void operator delete(void* ptr) NOEXCEPT { free(ptr); } -void operator delete[](void* ptr) noexcept +void operator delete[](void* ptr) NOEXCEPT { free(ptr); } #if (__cplusplus > 201103L) -void operator delete(void* ptr, size_t) noexcept +void operator delete(void* ptr, size_t) NOEXCEPT { free(ptr); } -void operator delete[](void* ptr, size_t) noexcept +void operator delete[](void* ptr, size_t) NOEXCEPT { free(ptr); }