diff options
-rw-r--r-- | src/lib/netlist/plib/pmatrix2d.h | 2 | ||||
-rw-r--r-- | src/lib/netlist/plib/ptypes.h | 21 |
2 files changed, 20 insertions, 3 deletions
diff --git a/src/lib/netlist/plib/pmatrix2d.h b/src/lib/netlist/plib/pmatrix2d.h index 3874c146bb0..9fc816f118b 100644 --- a/src/lib/netlist/plib/pmatrix2d.h +++ b/src/lib/netlist/plib/pmatrix2d.h @@ -163,7 +163,7 @@ namespace plib pmatrix2d_vrl(const pmatrix2d_vrl &) = default; pmatrix2d_vrl &operator=(const pmatrix2d_vrl &) = default; pmatrix2d_vrl(pmatrix2d_vrl &&) noexcept = default; - pmatrix2d_vrl &operator=(pmatrix2d_vrl &&) noexcept(!compile_info::clang_apple_noexcept_issue::value) = default; + pmatrix2d_vrl &operator=(pmatrix2d_vrl &&) noexcept(!compile_info::clang_noexcept_issue::value) = default; ~pmatrix2d_vrl() = default; diff --git a/src/lib/netlist/plib/ptypes.h b/src/lib/netlist/plib/ptypes.h index f46eb0b65c1..12e2a73f826 100644 --- a/src/lib/netlist/plib/ptypes.h +++ b/src/lib/netlist/plib/ptypes.h @@ -85,6 +85,13 @@ namespace plib NVCC }; + enum class ci_cpp_stdlib + { + UNKNOWN, + LIBSTDCXX, + LIBCPP + }; + enum class ci_os { UNKNOWN, @@ -153,6 +160,16 @@ namespace plib using type = std::integral_constant<ci_compiler, ci_compiler::UNKNOWN>; using version = std::integral_constant<int, 0>; #endif + #if defined(_LIBCPP_VERSION) + using cpp_stdlib = std::integral_constant<ci_cpp_stdlib, ci_cpp_stdlib::LIBCPP>; + using cpp_stdlib_version = std::integral_constant<int, ((_LIBCPP_VERSION) / 1000) * 100 + ((_LIBCPP_VERSION) / 100) % 10>; + #elif defined(__GLIBCXX__) + using cpp_stdlib = std::integral_constant<ci_cpp_stdlib, ci_cpp_stdlib::LIBSTDCXX>; + using cpp_stdlib_version = std::integral_constant<int, (_GLIBCXX_RELEASE) * 100>; + #else + using cpp_stdlib = std::integral_constant<ci_cpp_stdlib, ci_cpp_stdlib::UNKNOWN>; + using cpp_stdlib_version = std::integral_constant<int, 0>; + #endif #ifdef __unix__ using is_unix = std::integral_constant<bool, true>; #else @@ -195,9 +212,9 @@ namespace plib using mingw = std::integral_constant<bool, false>; #endif #if defined(__APPLE__) - using clang_apple_noexcept_issue = std::integral_constant<bool, version::value < 1100>; + using clang_noexcept_issue = std::integral_constant<bool, version::value < 1100>; #else - using clang_apple_noexcept_issue = std::integral_constant<bool, false>; + using clang_noexcept_issue = std::integral_constant<bool, (type::value == ci_compiler::CLANG) && (version::value < 800)>; #endif #if defined(__ia64__) using abi_vtable_function_descriptors = std::integral_constant<bool, true>; |