[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++] Granularize <utility> includesReviewed By: ldionne, #libcSpies: EricWF, libcxx-commits, arphamanDifferential Revision: https://reviews.llvm.org/D120466
[libc++] Removes base member from tests.Change the tests to use the base friend function instead of members.Also changed some types to have a base friends instead of members.Reviewed By: #libc,
[libc++] Removes base member from tests.Change the tests to use the base friend function instead of members.Also changed some types to have a base friends instead of members.Reviewed By: #libc, ldionne, QuuxplusoneDifferential Revision: https://reviews.llvm.org/D120742
[libc++] [test] Qualify calls to std::get(tuple). NFC.It actually *is* important (for structured bindings) that `get(tuple)`be ADL-able; but that's not the point of this test in particular.Revie
[libc++] [test] Qualify calls to std::get(tuple). NFC.It actually *is* important (for structured bindings) that `get(tuple)`be ADL-able; but that's not the point of this test in particular.Reviewed as part of D119860.
[libc++] Fix LWG3589 "The const lvalue reference overload of get for subrange..."https://cplusplus.github.io/LWG/issue3589Differential Revision: https://reviews.llvm.org/D117961
[libc++] [ranges] ref_view and empty_view are borrowed ranges. Normalize borrowed_range tests.Differential Revision: https://reviews.llvm.org/D118164
[libc++] [ranges] Fix LWG3470 "convertible-to-non-slicing seems to reject valid case"Differential Revision: https://reviews.llvm.org/D117941
[libc++] Remove incorrect default constructor in cpp17_input_iteratorAFAICT, Cpp17InputIterators are not required to be default constructible,since that requirement is added in Cpp17ForwardIterato
[libc++] Remove incorrect default constructor in cpp17_input_iteratorAFAICT, Cpp17InputIterators are not required to be default constructible,since that requirement is added in Cpp17ForwardIterator. Hence, ourarchetype for Cpp17InputIterator should not be default constructible.Removing that constructor has a ripple effect on a couple of tests thatwere making incorrect assumptions. Notably:- Some tests were using cpp17_input_iterator as a sentinel for itself. That is not valid, because a cpp17_input_iterator is not semiregular anymore after the change (and hence it doesn't satisfy sentinel_for).- Some tests were using a stride-counted cpp17_input_iterator as the sentinel for a range. This doesn't work anymore because of the problem above, so these tests were changed not to check stride counts for input iterators.- Some tests were default constructing cpp17_input_iterator when a simple alternative was available -- those have been changed to use that alternative.Differential Revision: https://reviews.llvm.org/D115806
[libc++] Add an option to disable wide character support in libc++Some embedded platforms do not wish to support the C library functionalityfor handling wchar_t because they have no use for it. It
[libc++] Add an option to disable wide character support in libc++Some embedded platforms do not wish to support the C library functionalityfor handling wchar_t because they have no use for it. It makes sense forlibc++ to work properly on those platforms, so this commit adds a carve-outof functionality for wchar_t.Unfortunately, unlike some other carve-outs (e.g. random device), thispatch touches several parts of the library. However, despite the wideimpact of this patch, I still think it is important to support thisconfiguration since it makes it much simpler to port libc++ to someembedded platforms.Differential Revision: https://reviews.llvm.org/D111265
[libc++] Simplify std::ranges::subrangeInstead of using a base class to store the members and the optionalsize, use [[no_unique_address]] to achieve the same thing withoutneeding a base class.A
[libc++] Simplify std::ranges::subrangeInstead of using a base class to store the members and the optionalsize, use [[no_unique_address]] to achieve the same thing withoutneeding a base class.Also, as a fly-by:- Change subrange from struct to class (per the standard)- Improve the diagnostic for when one doesn't provide a size to the ctor of a sized subrange- Replace this->member by just member since it's not in a dependent base anymoreThis change would be an ABI break due to [[no_unique_address]], but wehaven't shipped ranges anywhere yet, so this shouldn't affect anyone.Differential Revision: https://reviews.llvm.org/D110370
[libc++] Add an assertion in the subrange constructors with a size hintThose constructors are very easy to misuse -- one could easily think thatthe size passed to the constructor is the size of th
[libc++] Add an assertion in the subrange constructors with a size hintThose constructors are very easy to misuse -- one could easily think thatthe size passed to the constructor is the size of the range to exhibitfrom the subrange. Instead, it's a size hint and it's UB to get it wrong.Hence, when it's cheap to compute the real size of the range, it's cheapto make sure that the user didn't get it wrong.Differential Revision: https://reviews.llvm.org/D108827
[libc++] Various cleanups in the ranges tests- Rename test files to follow conventions better- Split constructor tests that were in a single file- Add missing tests for take_view and transform_vi
[libc++] Various cleanups in the ranges tests- Rename test files to follow conventions better- Split constructor tests that were in a single file- Add missing tests for take_view and transform_view's default constructors- Add missing tests for transform_view's view/function constructor- Fix include guards- Mark some tests as being specific to libc++Differential Revision: https://reviews.llvm.org/D108829
[libc++] Implement structured binding for std::ranges::subrange.The `get` half of this machinery was already implemented, but the `tuple_size`and `tuple_element` parts were hiding in [ranges.syn]
[libc++] Implement structured binding for std::ranges::subrange.The `get` half of this machinery was already implemented, but the `tuple_size`and `tuple_element` parts were hiding in [ranges.syn] and therefore missed.Differential Revision: https://reviews.llvm.org/D108054
[libc++] Remove Lit annotations for unsupported GCC versions from the test suiteSince we officially don't support several older compilers now, we candrop a lot of the markup in the test suite. Thi
[libc++] Remove Lit annotations for unsupported GCC versions from the test suiteSince we officially don't support several older compilers now, we candrop a lot of the markup in the test suite. This helps keep the testsuite simple and makes sure that UNSUPPORTED annotations don't rot.This is the first patch of a series that will remove annotations forcompilers that are now unsupported.Differential Revision: https://reviews.llvm.org/D107787
[libc++] Disable incomplete library features.Adds a new CMake option to disable the usage of incomplete headers.These incomplete headers are not guaranteed to be ABI stable. Thisoption is intende
[libc++] Disable incomplete library features.Adds a new CMake option to disable the usage of incomplete headers.These incomplete headers are not guaranteed to be ABI stable. Thisoption is intended to be used by vendors so they can avoid their usersfrom code that's not ready for production usage.The option is enabled by default.Differential Revision: https://reviews.llvm.org/D106763
[libcxx][ranges] makes `ranges::subrange` a borrowed rangeDifferential Revision: https://reviews.llvm.org/D106207
[libc++] [test] Fix some GCC 11 errors/warnings in these tests. NFCI.Differential Revision: https://reviews.llvm.org/D104228
[libcxx][ranges] Add range.subrange.Basically the title.Differential Revision: https://reviews.llvm.org/D102006