diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2025-01-19 15:56:44 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2025-01-19 18:17:55 +0000 |
commit | 07795f50c324d1030d2339292eb4d7dafb14db19 (patch) | |
tree | 9e02210a6da11b137d4baa1d37368e22e643e4c6 | |
parent | 008058f5cb47a0936734eeae3a3d9e9051ff2c85 (diff) |
math/givaro: only declare std::bool_constant if it does not exist yet
While doing test builds for bug 284159 (math/linbox), I ran into an
issue compiling against one of the math/givaro headers, with clang and
libc++ 19:
/usr/local/include/givaro/random-integer.h:40:14: error: reference to 'bool_constant' is ambiguous
40 | std::bool_constant<_Exact_Size>::type _Exact_Size_t;
| ^
/usr/include/c++/v1/__type_traits/integral_constant.h:42:1: note: candidate found by name lookup is 'std::__1::bool_constant'
42 | using bool_constant = integral_constant<bool, __b>;
| ^
/usr/local/include/givaro/random-integer.h:16:5: note: candidate found by name lookup is 'std::bool_constant'
16 | using bool_constant = integral_constant<bool, B>;
| ^
The problem is that random-integer.h attempts to declare
std::bool_constant, even though libc++ headers already have this
template.
Conditionalize it on __cpp_lib_bool_constant [1], so it is only declared
when necessary (i.e. if somebody compiles against and older C++
library).
[1] https://en.cppreference.com/w/cpp/feature_test#cpp_lib_bool_constant
PR: 284167
Approved by: pi (maintainer)
MFH: 2025Q1
(cherry picked from commit 238564b86a506b7ec6e8a3b7b6be7a423cb50337)
-rw-r--r-- | math/givaro/files/patch-src_kernel_integer_random-integer.h | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/math/givaro/files/patch-src_kernel_integer_random-integer.h b/math/givaro/files/patch-src_kernel_integer_random-integer.h index 901ddd8ea8e3..f8c7c62f7c21 100644 --- a/math/givaro/files/patch-src_kernel_integer_random-integer.h +++ b/math/givaro/files/patch-src_kernel_integer_random-integer.h @@ -1,6 +1,19 @@ --- src/kernel/integer/random-integer.h.orig 2021-12-14 10:00:03 UTC +++ src/kernel/integer/random-integer.h -@@ -91,7 +91,6 @@ namespace Givaro +@@ -11,10 +11,12 @@ + + #include "gmp++/gmp++.h" + ++#if __cpp_lib_bool_constant < 201505L + namespace std { + template <bool B> + using bool_constant = integral_constant<bool, B>; + } ++#endif + + namespace Givaro + { +@@ -91,7 +93,6 @@ namespace Givaro if (this != &R) { _bits = R._bits; _integer = R._integer; |