diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2026-02-25 20:09:06 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2026-02-25 21:18:53 +0000 |
| commit | c6266b20c47f5cd2194b16d7f63781fb394caa0b (patch) | |
| tree | cab6cae657b73e92fff91c0320bf14689fb080c9 | |
| parent | 01e1b3320c5765b4ac3875d13f6b810212177ce1 (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_dual | 13 |
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> |
