mirror of
https://git.freebsd.org/ports.git
synced 2025-04-28 01:26:39 -04:00
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
This commit is contained in:
parent
cdcee02810
commit
238564b86a
1 changed files with 14 additions and 1 deletions
|
@ -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;
|
||||
|
|
Loading…
Add table
Reference in a new issue