[gcc r10-9703] libstdc++: Fix <bit> to work freestanding [PR 100060]

Jonathan Wakely redi@gcc.gnu.org
Tue Apr 13 17:52:13 GMT 2021


https://gcc.gnu.org/g:d83dace65b97112320042c7f4941b64ef339799d

commit r10-9703-gd83dace65b97112320042c7f4941b64ef339799d
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Tue Apr 13 16:55:37 2021 +0100

    libstdc++: Fix <bit> to work freestanding [PR 100060]
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/100060
            * include/std/bit: Only include <ext/numeric_traits.h> for
            hosted build, use <limits> otherwise.
    
    (cherry picked from commit 474cb5a0a404c5de7c1cd21aac8b1b7e7ce95d9b)

Diff:
---
 libstdc++-v3/include/std/bit | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/include/std/bit b/libstdc++-v3/include/std/bit
index f22ee528555..2b24f0d450b 100644
--- a/libstdc++-v3/include/std/bit
+++ b/libstdc++-v3/include/std/bit
@@ -34,7 +34,23 @@
 #if __cplusplus >= 201402L
 
 #include <type_traits>
-#include <ext/numeric_traits.h>
+
+#if _GLIBCXX_HOSTED
+# include <ext/numeric_traits.h>
+#else
+# include <limits>
+/// @cond undocumented
+namespace __gnu_cxx
+{
+  template<typename _Tp>
+    struct __int_traits
+    {
+      static constexpr int __digits = std::numeric_limits<_Tp>::digits;
+      static constexpr _Tp __max = std::numeric_limits<_Tp>::max();
+    };
+}
+/// @endcond
+#endif
 
 namespace std _GLIBCXX_VISIBILITY(default)
 {


More information about the Libstdc++-cvs mailing list