-
Notifications
You must be signed in to change notification settings - Fork 13.6k
[libc++][ranges] P2609R3: Relaxing Ranges Just A Smidge #101715
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Co-authored-by: Jakub Mazurkiewicz <[email protected]>
In C++20 mode the value should be 202110L because - 202202L covers `range_adaptor_closure` (P2387R3), and - 202207L covers move-only types in range adaptors (P2494R2). And of these changes are only available since C++23 mode. In C++23 mode the value should be 202406L because - 202211L covers removing poison overloads (P2602R2), - 202302L covers relaxing projected value types (P2609R3), and - 202406L covers removing requirements on iter_common_reference_t (P2997R1). And all of these changes are already or being implemented.
@llvm/pr-subscribers-libcxx Author: A. Jiang (frederick-vs-ja) ChangesPaper link: https://wg21.link/p2609r3 The test code was originally authored by @JMazurkiewicz. Notes for the DR statusP2609R3 is not officially a Defect Report, but MSVC STL implements in C++20 mode. Moreover, P2609R3 and P2997R1 touch exactly the same set of concepts, and MSVC STL and libc++ have already treated P2997R1 as a DR. Notes for adjustments of feature-test macro
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM with a minor test comment. Very comprehensive patch here as well, thanks!
...td/iterators/iterator.requirements/indirectcallable.traits/indirect.value.t.compile.pass.cpp
Outdated
Show resolved
Hide resolved
...x/test/std/iterators/iterator.requirements/indirectcallable.traits/indirect.value.t.pass.cpp
Outdated
Show resolved
Hide resolved
…le.traits/indirect.value.t.pass.cpp
This is a (very partial) cherry-pick of llvm#101715 to fix this oversight in the LLVM 19 release.
This is a (very partial) cherry-pick of llvm#101715 to fix this oversight in the LLVM 19 release.
This is a (very partial) cherry-pick of llvm#101715 to fix this oversight in the LLVM 19 release.
This is a (very partial) cherry-pick of llvm#101715 to fix this oversight in the LLVM 19 release.
This is a (very partial) cherry-pick of llvm#101715 to fix this oversight in the LLVM 19 release.
Paper link: https://wg21.link/p2609r3
The test code was originally authored by @JMazurkiewicz.
Fixes #105253.
Notes for the DR status
P2609R3 is not officially a Defect Report, but MSVC STL implements it in C++20 mode.
Moreover, P2609R3 and P2997R1 touch exactly the same set of concepts, and MSVC STL and libc++ have already treated P2997R1 as a DR.
Notes for adjustments of feature-test macro
__cpp_lib_ranges
In C++20 mode, the value should be
202110L
because202202L
coversrange_adaptor_closure
(P2387R3), and202207L
covers move-only types in range adaptors (P2494R2).And all of these changes are only available since C++23 mode.
In C++23 mode, the value should be
202406L
because202211L
covers removing poison overloads (P2602R2),202302L
covers relaxing projected value types (P2609R3), and202406L
covers removing requirements oniter_common_reference_t
(P2997R1).And all of these changes are already or being implemented.
References:
Closes #105253