aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2026-02-25 20:09:06 +0000
committerDimitry Andric <dim@FreeBSD.org>2026-02-25 21:18:53 +0000
commitc6266b20c47f5cd2194b16d7f63781fb394caa0b (patch)
treecab6cae657b73e92fff91c0320bf14689fb080c9
parent01e1b3320c5765b4ac3875d13f6b810212177ce1 (diff)
cad/ngspice_rework: fix build with libc++ 21
With libc++ 21 cad/ngspice_rework fails to build, with errors similar to: In file included from hicumL2temp.cpp:11: ../../../../src/include/cppduals/duals/dual:444:8: error: 'is_compound' cannot be specialized: Users are not allowed to specialize this standard library entity [-Winvalid-specialization] 444 | struct is_compound<duals::dual<T>> : true_type {}; | ^ /usr/include/c++/v1/__type_traits/is_compound.h:25:8: note: marked '_Clang::no_specializations' here 25 | struct _LIBCPP_NO_SPECIALIZATIONS is_compound : _BoolConstant<__is_compound(_Tp)> {}; | ^ /usr/include/c++/v1/__config:1167:9: note: expanded from macro '_LIBCPP_NO_SPECIALIZATIONS' 1167 | [[_Clang::__no_specializations__("Users are not allowed to specialize this standard library entity")]] | ^ This is because libc++ 21 no longer allows specializing a number of standard library entities. Delete out the specialization to make the build complete. PR: 293447 Approved by: kevinz5000@gmail.com (maintainer) MFH: 2026Q1
-rw-r--r--cad/ngspice_rework/files/patch-src_include_cppduals_duals_dual13
1 files changed, 13 insertions, 0 deletions
diff --git a/cad/ngspice_rework/files/patch-src_include_cppduals_duals_dual b/cad/ngspice_rework/files/patch-src_include_cppduals_duals_dual
new file mode 100644
index 000000000000..c232dfca6751
--- /dev/null
+++ b/cad/ngspice_rework/files/patch-src_include_cppduals_duals_dual
@@ -0,0 +1,13 @@
+--- src/include/cppduals/duals/dual.orig 2025-01-11 12:35:18 UTC
++++ src/include/cppduals/duals/dual
+@@ -439,10 +439,6 @@ struct is_arithmetic<duals::dual<T>> : is_arithmetic<T
+
+ #endif // CPPDUALS_ENABLE_IS_ARITHMETIC
+
+-/// Duals are compound types.
+-template <class T>
+-struct is_compound<duals::dual<T>> : true_type {};
+-
+ // Modification of std::numeric_limits<> per
+ // C++03 17.4.3.1/1, and C++11 18.3.2.3/1.
+ template <class T>