aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libstdc++-v3/doc/html/manual/status.html11
-rw-r--r--libstdc++-v3/doc/xml/manual/status_cxx2020.xml16
-rw-r--r--libstdc++-v3/include/bits/hashtable.h6
-rw-r--r--libstdc++-v3/include/std/version3
-rw-r--r--libstdc++-v3/testsuite/23_containers/unordered_map/operations/1.cc7
-rw-r--r--libstdc++-v3/testsuite/23_containers/unordered_set/operations/1.cc7
6 files changed, 39 insertions, 11 deletions
diff --git a/libstdc++-v3/doc/html/manual/status.html b/libstdc++-v3/doc/html/manual/status.html
index dee6c3a..75ac9e7 100644
--- a/libstdc++-v3/doc/html/manual/status.html
+++ b/libstdc++-v3/doc/html/manual/status.html
@@ -1364,10 +1364,10 @@ or any notes about the implementation.
</td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_jthread &gt;= 201907L</code> </td></tr><tr><td align="left"> Rename <code class="code">condition_variable_any</code> interruptible wait methods </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1869r1.html" target="_top">
P1869R1 </a>
- </td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_jthread &gt;= 201911L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Atomic waiting and notifying, std::semaphore, std::latch and std::barrier </td><td align="left">
+ </td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_jthread &gt;= 201911L</code> </td></tr><tr><td align="left"> Atomic waiting and notifying, std::semaphore, std::latch and std::barrier </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1135r6.html" target="_top">
P1135R6 </a>
- </td><td align="center"> </td><td align="left">
+ </td><td align="center"> 11.1 </td><td align="left">
<div class="informaltable"><table class="informaltable" border="0"><colgroup><col /></colgroup><tbody><tr><td> <code class="code">__cpp_lib_atomic_lock_free_type_aliases &gt;= 201907L</code> </td></tr><tr><td> <code class="code">__cpp_lib_atomic_flag_test &gt;= 201907L</code> </td></tr><tr><td> <code class="code">__cpp_lib_atomic_wait &gt;= 201907L</code> </td></tr><tr><td> <code class="code">__cpp_lib_semaphore &gt;= 201907L</code> </td></tr><tr><td> <code class="code">__cpp_lib_latch &gt;= 201907L</code> </td></tr><tr><td> <code class="code">__cpp_lib_barrier &gt;= 201907L</code> </td></tr></tbody></table></div>
</td></tr><tr><td align="left"> Fixing Atomic Initialization </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0883r2.pdf" target="_top">
@@ -1479,10 +1479,13 @@ or any notes about the implementation.
</td><td align="center"> 9.1 </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Comparing Unordered Containers </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0809r0.pdf" target="_top">
P0809R0 </a>
- </td><td align="center"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Heterogeneous lookup for unordered containers </td><td align="left">
+ </td><td align="center"> </td><td align="left"> </td></tr><tr><td align="left"> Heterogeneous lookup for unordered containers </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0919r3.html" target="_top">
P0919R3 </a>
- </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_generic_unordered_lookup &gt;= 201811</code> </td></tr><tr><td align="left"> Adopt Consistent Container Erasure from Library Fundamentals 2 for C++20 </td><td align="left">
+ </td><td align="center"> 11.1 </td><td align="left"> <code class="code">__cpp_lib_generic_unordered_lookup &gt;= 201811</code> </td></tr><tr><td align="left"> Refinement Proposal for P0919 </td><td align="left">
+ <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1690r1.html" target="_top">
+ P1690R1 </a>
+ </td><td align="center"> 11.1 </td><td align="left"> </td></tr><tr><td align="left"> Adopt Consistent Container Erasure from Library Fundamentals 2 for C++20 </td><td align="left">
<a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html" target="_top">
P1209R0 </a>
</td><td align="center"> 9.1 </td><td align="left"> <code class="code">__cpp_lib_erase_if &gt;= 201811L</code> </td></tr><tr><td align="left"> Improving the Return Value of Erase-Like Algorithms </td><td align="left">
diff --git a/libstdc++-v3/doc/xml/manual/status_cxx2020.xml b/libstdc++-v3/doc/xml/manual/status_cxx2020.xml
index b62a432..ca12d80 100644
--- a/libstdc++-v3/doc/xml/manual/status_cxx2020.xml
+++ b/libstdc++-v3/doc/xml/manual/status_cxx2020.xml
@@ -429,13 +429,12 @@ or any notes about the implementation.
</row>
<row>
- <?dbhtml bgcolor="#C8B0B0" ?>
<entry> Atomic waiting and notifying, std::semaphore, std::latch and std::barrier </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1135r6.html">
P1135R6 </link>
</entry>
- <entry align="center"> </entry>
+ <entry align="center"> 11.1 </entry>
<entry>
<informaltable colsep="0" rowsep="0" rowheader="norowheader" frame="none"><tgroup cols="1"><tbody>
<row><entry> <code>__cpp_lib_atomic_lock_free_type_aliases &gt;= 201907L</code> </entry></row>
@@ -803,17 +802,26 @@ or any notes about the implementation.
</row>
<row>
- <?dbhtml bgcolor="#C8B0B0" ?>
<entry> Heterogeneous lookup for unordered containers </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0919r3.html">
P0919R3 </link>
</entry>
- <entry align="center"> </entry>
+ <entry align="center"> 11.1 </entry>
<entry> <code>__cpp_lib_generic_unordered_lookup &gt;= 201811</code> </entry>
</row>
<row>
+ <entry> Refinement Proposal for P0919 </entry>
+ <entry>
+ <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1690r1.html">
+ P1690R1 </link>
+ </entry>
+ <entry align="center"> 11.1 </entry>
+ <entry/>
+ </row>
+
+ <row>
<entry> Adopt Consistent Container Erasure from Library Fundamentals 2 for C++20 </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html">
diff --git a/libstdc++-v3/include/bits/hashtable.h b/libstdc++-v3/include/bits/hashtable.h
index 4bdbe7d..dfc2a2a 100644
--- a/libstdc++-v3/include/bits/hashtable.h
+++ b/libstdc++-v3/include/bits/hashtable.h
@@ -735,7 +735,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
std::pair<const_iterator, const_iterator>
equal_range(const key_type& __k) const;
-#if __cplusplus > 201702L
+#if __cplusplus >= 202002L
+#define __cpp_lib_generic_unordered_lookup 201811L
+
template<typename _Kt,
typename = __has_is_transparent_t<_Hash, _Kt>,
typename = __has_is_transparent_t<_Equal, _Kt>>
@@ -765,7 +767,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
typename = __has_is_transparent_t<_Equal, _Kt>>
pair<const_iterator, const_iterator>
_M_equal_range_tr(const _Kt& __k) const;
-#endif
+#endif // C++20
private:
// Bucket index computation helpers.
diff --git a/libstdc++-v3/include/std/version b/libstdc++-v3/include/std/version
index ea0e18a..8d0b2b9 100644
--- a/libstdc++-v3/include/std/version
+++ b/libstdc++-v3/include/std/version
@@ -169,7 +169,7 @@
#define __cpp_lib_variant 201606L
#endif
-#if __cplusplus > 201703L
+#if __cplusplus >= 202002L
// c++20
#define __cpp_lib_atomic_flag_test 201907L
#define __cpp_lib_atomic_float 201711L
@@ -225,6 +225,7 @@
#define __cpp_lib_constexpr_tuple 201811L
#define __cpp_lib_constexpr_utility 201811L
#define __cpp_lib_erase_if 202002L
+#define __cpp_lib_generic_unordered_lookup 201811L
#define __cpp_lib_interpolate 201902L
#ifdef _GLIBCXX_HAS_GTHREADS
# define __cpp_lib_jthread 201911L
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_map/operations/1.cc b/libstdc++-v3/testsuite/23_containers/unordered_map/operations/1.cc
index 4f2df728..f310a8a 100644
--- a/libstdc++-v3/testsuite/23_containers/unordered_map/operations/1.cc
+++ b/libstdc++-v3/testsuite/23_containers/unordered_map/operations/1.cc
@@ -18,6 +18,13 @@
// { dg-do run { target c++20 } }
#include <unordered_map>
+
+#ifndef __cpp_lib_generic_unordered_lookup
+# error "Feature-test macro for generic lookup missing in <unordered_map>"
+#elif __cpp_lib_generic_unordered_lookup < 201811L
+# error "Feature-test macro for generic lookup has wrong value in <unordered_map>"
+#endif
+
#include <testsuite_hooks.h>
struct Equal
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_set/operations/1.cc b/libstdc++-v3/testsuite/23_containers/unordered_set/operations/1.cc
index 34414d2..66826dc 100644
--- a/libstdc++-v3/testsuite/23_containers/unordered_set/operations/1.cc
+++ b/libstdc++-v3/testsuite/23_containers/unordered_set/operations/1.cc
@@ -18,6 +18,13 @@
// { dg-do run { target c++20 } }
#include <unordered_set>
+
+#ifndef __cpp_lib_generic_unordered_lookup
+# error "Feature-test macro for generic lookup missing in <unordered_set>"
+#elif __cpp_lib_generic_unordered_lookup < 201811L
+# error "Feature-test macro for generic lookup has wrong value in <unordered_set>"
+#endif
+
#include <testsuite_hooks.h>
struct Equal