sberg added a comment. One problem I found with the macro `__cpp_impl_destroying_delete` not being conditional on language version is the following: Recent GCC trunk (since https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=76b94d4ba654e9af1882865933343d11f5c3b18b "Implement P0722R3, destroying operator delete.") contains
#if __cpp_impl_destroying_delete #define __cpp_lib_destroying_delete 201806L namespace std { struct destroying_delete_t { explicit destroying_delete_t() = default; }; inline constexpr destroying_delete_t destroying_delete{}; } #endif // destroying delete at "top-level" (i.e., not in a C++20-only `#if` or similar) in `libstdc++-v3/libsupc++/new`. That means that when using Clang against that GCC toolchain, `#include <new>` in C++03 mode will cause `error: unknown type name 'constexpr'`. Repository: rC Clang CHANGES SINCE LAST ACTION https://reviews.llvm.org/D55741/new/ https://reviews.llvm.org/D55741 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits