diff options
author | Patrick Palka <ppalka@redhat.com> | 2024-08-22 09:24:11 -0400 |
---|---|---|
committer | Patrick Palka <ppalka@redhat.com> | 2024-08-22 09:24:11 -0400 |
commit | b552730faf36f1eae1dc6e73ccc93a016dec5401 (patch) | |
tree | 93377445ca094cd9dde66ffae5cdadef7fea61ae /gcc/coverage.cc | |
parent | a98dd536b1017c2b814a3465206c6c01b2890998 (diff) | |
download | gcc-b552730faf36f1eae1dc6e73ccc93a016dec5401.zip gcc-b552730faf36f1eae1dc6e73ccc93a016dec5401.tar.gz gcc-b552730faf36f1eae1dc6e73ccc93a016dec5401.tar.bz2 |
libstdc++: Implement P2609R3 changes to the indirect invocability concepts
This implements the changes of this C++23 paper as a DR against C++20.
Note that after the later P2538R1 "ADL-proof std::projected" (which we
already implement), we can't use a simple partial specialization to match
specializations of the 'projected' alias template. So instead we identify
such specializations using a pair of distinguishing member aliases.
libstdc++-v3/ChangeLog:
* include/bits/iterator_concepts.h (__detail::__indirect_value):
Define.
(__indirect_value_t): Define as per P2609R3.
(iter_common_reference_t): Adjust as per P2609R3.
(indirectly_unary_invocable): Likewise.
(indirectly_regular_unary_invocable): Likewise.
(indirect_unary_predicate): Likewise.
(indirect_binary_predicate): Likewise.
(indirect_equivalence_relation): Likewise.
(indirect_strict_weak_order): Likewise.
(__detail::__projected::__type): Define member aliases
__projected_Iter and __projected_Proj providing the
template arguments of the current specialization.
* include/bits/version.def (ranges): Update value.
* include/bits/version.h: Regenerate.
* testsuite/24_iterators/indirect_callable/p2609r3.cc: New test.
* testsuite/std/ranges/version_c++23.cc: Update expected value
of __cpp_lib_ranges macro.
Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
Diffstat (limited to 'gcc/coverage.cc')
0 files changed, 0 insertions, 0 deletions