Skip to content
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

P2321R2 zip #2252

Closed
StephanTLavavej opened this issue Oct 5, 2021 · 8 comments · Fixed by #3546
Closed

P2321R2 zip #2252

StephanTLavavej opened this issue Oct 5, 2021 · 8 comments · Fixed by #3546
Labels
cxx23 C++23 feature fixed Something works now, yay! ranges C++20/23 ranges

Comments

@StephanTLavavej
Copy link
Member

StephanTLavavej commented Oct 5, 2021

P2321R2 zip

Feature-test macro:

#define __cpp_lib_ranges_zip 202110L

Be sure to implement the resolutions of these LWG issues which patch this feature:

  • LWG-3692 zip_view::iterator's operator<=> is overconstrained
  • LWG-3702 Should zip_transform_view::iterator remove operator<?
  • LWG-3773 views::zip_transform still requires F to be copy_constructible when empty pack
  • LWG-3798 Rvalue reference and iterator_category
  • LWG-3848 adjacent_view, adjacent_transform_view, and slide_view missing base accessor

and the pertinent changes from P2165R4 and P2494R2.

@StephanTLavavej StephanTLavavej added ranges C++20/23 ranges cxx23 C++23 feature labels Oct 5, 2021
@Ukilele
Copy link
Contributor

Ukilele commented Apr 28, 2022

Not that I would want to make promises, that I will create a MR any time soon. But I at least implemented some of the minor changes as well as zip_view in https://github.com/Ukilele/STL/tree/ranges_zip.
I could use some help with:

  • 5.1 & 5.2: Constructors and assignment operators for std::tuple and std::pair
  • 5.4: Not sure which changes this requires
  • 5.6: Is implemented as described in the paper. But are there functions whose noexceptness should be strengthened?

@frederick-vs-ja
Copy link
Contributor

frederick-vs-ja commented Apr 29, 2022

  • 5.4: Not sure which changes this requires

Changes (or clarifications) in this section can be skipped now. They are superseded by WG21-P2393, which should be treated as a DR against C++20, and has already been implemented in MSVC STL.

@miscco
Copy link
Contributor

miscco commented May 20, 2022

Hey do you need any help with this?

@Ukilele
Copy link
Contributor

Ukilele commented May 20, 2022

Hey @miscco , I assume this question is addressed to me? If so, thanks for asking! Unfortunately, currently I wont find the time to work on this. The missing parts in my branch are noexcept-strengthening, unit tests as well as adjacent and adjacent_transform.

@miscco
Copy link
Contributor

miscco commented May 20, 2022

Note that you do not need to implement everything in a go.

Could you do a squash and rebase on main? I would be happy to give it another round of review and Tam implemented most prerequisites

@Ukilele
Copy link
Contributor

Ukilele commented May 20, 2022

Squashed and rebased on main 🙂
main...Ukilele:ranges_zip

@frederick-vs-ja
Copy link
Contributor

P2165R4 also changes zip_view etc. (making them no longer use pair) and basic_common_reference and common_type partial specializations.

@CaseyCarter
Copy link
Contributor

P2165R4 also changes zip_view etc. (making them no longer use pair) and basic_common_reference and common_type partial specializations.

I will add a note to the OP to make sure that zip implementation doesn't miss the changes from P2165R4. There's enough to P2165R4 that I think of it as more a standalone feature than simply a patch on zip, so I'll leave the separate feature issue.

@StephanTLavavej StephanTLavavej added the fixed Something works now, yay! label Mar 17, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cxx23 C++23 feature fixed Something works now, yay! ranges C++20/23 ranges
Projects
Development

Successfully merging a pull request may close this issue.

5 participants