libstdc++: Add feature test macro for heterogeneous lookup in unordered containers
Also update the C++20 status docs. Signed-off-by: Jonathan Wakely <jwakely@redhat.com> libstdc++-v3/ChangeLog: * doc/xml/manual/status_cxx2020.xml: * doc/html/*: Regenerate. * include/bits/hashtable.h (__cpp_lib_generic_unordered_lookup): Define. * include/std/version (__cpp_lib_generic_unordered_lookup): Define. * testsuite/23_containers/unordered_map/operations/1.cc: Check feature test macro. * testsuite/23_containers/unordered_set/operations/1.cc: Likewise.
This commit is contained in:
parent
ad3f0ad4ba
commit
f78f25f438
6 changed files with 39 additions and 11 deletions
|
@ -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 >= 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 >= 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 >= 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 >= 201907L</code> </td></tr><tr><td> <code class="code">__cpp_lib_atomic_flag_test >= 201907L</code> </td></tr><tr><td> <code class="code">__cpp_lib_atomic_wait >= 201907L</code> </td></tr><tr><td> <code class="code">__cpp_lib_semaphore >= 201907L</code> </td></tr><tr><td> <code class="code">__cpp_lib_latch >= 201907L</code> </td></tr><tr><td> <code class="code">__cpp_lib_barrier >= 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 >= 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 >= 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 >= 201811L</code> </td></tr><tr><td align="left"> Improving the Return Value of Erase-Like Algorithms </td><td align="left">
|
||||
|
|
|
@ -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 >= 201907L</code> </entry></row>
|
||||
|
@ -803,16 +802,25 @@ 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 >= 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>
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue