[libc++] Replace _LIBCPP_HAS_NO_CONCEPTS with _LIBCPP_STD_VER > 17. NFCI.All supported compilers that support C++20 now support concepts. So, remove`_LIB_LIBCPP_HAS_NO_CONCEPTS` in favor of `_LIBC
[libc++] Replace _LIBCPP_HAS_NO_CONCEPTS with _LIBCPP_STD_VER > 17. NFCI.All supported compilers that support C++20 now support concepts. So, remove`_LIB_LIBCPP_HAS_NO_CONCEPTS` in favor of `_LIBCPP_STD_VER > 17`. Similarly inthe tests, remove `// UNSUPPORTED: libcpp-no-concepts`.Differential Revision: https://reviews.llvm.org/D121528
show more ...
[libc++] Guard much of std::ranges under _LIBCPP_HAS_NO_INCOMPLETE_RANGES.The logic here is that we are disabling *only* things in `std::ranges::`.Everything in `std::` is permitted, including `de
[libc++] Guard much of std::ranges under _LIBCPP_HAS_NO_INCOMPLETE_RANGES.The logic here is that we are disabling *only* things in `std::ranges::`.Everything in `std::` is permitted, including `default_sentinel`, `contiguous_iterator`,`common_iterator`, `projected`, `swappable`, and so on. Then, we includeanything from `std::ranges::` that is required in order to make those thingswork: `ranges::swap`, `ranges::swap_ranges`, `input_range`, `ranges::begin`,`ranges::iter_move`, and so on. But then that's all. Everything else (includingnotably all of the "views" and the `std::views` namespace itself) is stilllocked up behind `_LIBCPP_HAS_NO_INCOMPLETE_RANGES`.Differential Revision: https://reviews.llvm.org/D118736
[libc++][NFC] Use cpp17_output_iterator in tests.The renames the output_iterator to cpp17_output_iterator. Theseiterators are still used in C++20 so it's not possible to change thecurrent type to
[libc++][NFC] Use cpp17_output_iterator in tests.The renames the output_iterator to cpp17_output_iterator. Theseiterators are still used in C++20 so it's not possible to change thecurrent type to the new C++20 requirements. This is done in a similarfashion as the cpp17_input_iterator.Reviewed By: #libc, Quuxplusone, ldionneDifferential Revision: https://reviews.llvm.org/D117950
[libc++] [ranges] Implement std::ranges::distanceThis includes an experimental workaround forLWG3664 "LWG3392 broke std::ranges::distance(a, a+3)",but the workaround may be incomplete, I'm not su
[libc++] [ranges] Implement std::ranges::distanceThis includes an experimental workaround forLWG3664 "LWG3392 broke std::ranges::distance(a, a+3)",but the workaround may be incomplete, I'm not sure.This should be re-audited when LWG3664 is actually adopted,to see if we need to change anything about our implementation.See also https://github.com/microsoft/STL/pull/2500Differential Revision: https://reviews.llvm.org/D117940