llvm-project/libcxx/include
Arthur O'Dwyer bf20a09790 [libc++] [P1614] Implement the second half of [cmp.alg]: compare_{strong,weak,partial}_fallback.
The tests for these are just copy-pasted from the tests for std::{strong,weak,partial}_order,
and then I added an extra clause in each (test_2()) to test the stuff that's not just the same
as std::*_order.

This also includes the fix for https://wg21.link/LWG3465 (which falls naturally out of the
"you must write it three times" style, but I've added test cases for it also).

There is an action item here to go back and give good diagnostics for SFINAE failures
in these CPOs. I've filed this as https://github.com/llvm/llvm-project/issues/53456 .

Differential Revision: https://reviews.llvm.org/D111514
2022-01-27 17:48:01 -05:00
..
__algorithm [libc++] Add _LIBCPP_HIDE_FROM_ABI to in_in_result 2022-01-15 20:30:08 +01:00
__bit [libc++] Implement P1272R4 (std::byteswap) 2021-11-22 01:28:18 +01:00
__charconv [libc++] Adds (to|from)_chars_result operator==. 2021-11-19 16:29:33 +01:00
__chrono [libcxx] chrono::month_weekday should not be default constructible 2022-01-20 11:47:56 -08:00
__compare [libc++] [P1614] Implement the second half of [cmp.alg]: compare_{strong,weak,partial}_fallback. 2022-01-27 17:48:01 -05:00
__concepts [libc++] Fix LWG3557 "static_cast expression in convertible_to has the wrong operand" 2022-01-26 19:32:46 -05:00
__coroutine [libcxx] [Coroutines] Support noop_coroutine for GCC 2021-12-27 13:53:21 +08:00
__filesystem [libc++] [API BREAK] Change `fs::path::iterator::iterator_category` to `input_iterator_tag`. 2022-01-17 16:33:23 -05:00
__format [libc++][format] Adds formatter handle. 2022-01-24 18:15:08 +01:00
__functional [libc++] Make C++03 reference_wrapper more like C++11. 2022-01-26 19:34:03 -05:00
__iterator [libc++] Fix a typo in reverse_iterator::operator=. 2022-01-27 14:21:50 -05:00
__memory [libc++] Eliminate the `__function_like` helper. 2022-01-20 14:40:16 -05:00
__numeric [libcxx][modularisation] modularises <numeric> header 2021-12-01 20:40:21 +00:00
__random [libc++] Fix LWG3422 "Issues of seed_seq's constructors" 2022-01-24 20:14:25 -05:00
__ranges [libc++] [ranges] ref_view and empty_view are borrowed ranges. Normalize borrowed_range tests. 2022-01-27 14:21:51 -05:00
__support [libcxx][test] compiler options are non-portable 2022-01-18 11:34:57 -08:00
__thread [libc++] Split a few utilities out of __threading_support 2022-01-18 12:23:44 -05:00
__utility [libc++] Alphabetize header #includes. NFCI. 2022-01-10 16:30:38 -05:00
__variant [libc++][NFC] Remove useless _LIBCPP_PUSH_MACROS 2021-08-27 12:41:55 -04:00
experimental [libc++][NFC] Remove clang-diagnostic-c++98-compat-extra-semi warnings in experimental/simd 2022-01-14 19:38:33 +01:00
ext [libc++] Alphabetize header #includes. NFCI. 2022-01-10 16:30:38 -05:00
CMakeLists.txt [libc++] [P1614] Implement the second half of [cmp.alg]: compare_{strong,weak,partial}_fallback. 2022-01-27 17:48:01 -05:00
__availability Microsoft's floating-point to_chars powered by Ryu and Ryu Printf 2021-12-12 16:34:50 +01:00
__bit_reference [libc++] Alphabetize header #includes. NFCI. 2022-01-10 16:30:38 -05:00
__bits [libc++] Fix some typos and remove unused macros. NFCI. 2021-04-22 12:02:22 -04:00
__bsd_locale_defaults.h [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
__bsd_locale_fallbacks.h [libc++] Add missing __format__ attributes 2021-11-26 11:03:14 -05:00
__config [libc++] Remove std::basic_string's base class in ABIv2 2022-01-25 00:21:53 +01:00
__config_site.in [libcxx] Add LIBCXX_EXTRA_SITE_DEFINES for adding extra defines in __config_site 2021-12-22 00:43:29 +02:00
__debug [libc++] Introduce __debug_db_insert_i() 2022-01-17 20:31:21 +01:00
__errc [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
__functional_base [libcxx][functional][modular] splices <functional> into modular headers 2021-07-01 14:01:49 -04:00
__hash_table [libc++] Use addressof in unordered_map. 2022-01-21 20:43:45 +01:00
__libcpp_version [libcxx] Bump __libcpp_version to 14 after branch 2021-07-28 11:07:06 +00:00
__locale [SystemZ][z/OS][NFC] Remove extra symbol 2022-01-21 16:18:46 -05:00
__mbstate_t.h [libc++] Add an option to disable wide character support in libc++ 2021-10-12 06:08:23 -04:00
__mutex_base [libc++] Modularize <chrono> 2022-01-14 09:55:29 -05:00
__node_handle [libc++][NFC] Add missing synopsis for node handles 2021-09-07 15:26:33 -04:00
__nullptr [libc++][NFC] Update namespace comments in include/ 2021-12-02 21:06:59 +01:00
__split_buffer [libc++] Comma-operator-proof a lot of algorithm/container code. 2021-09-08 13:34:01 -04:00
__std_stream [libc++] Alphabetize and include-what-you-use. NFCI. 2021-05-29 19:54:48 -04:00
__string [libc++] Alphabetize header #includes. NFCI. 2022-01-10 16:30:38 -05:00
__threading_support [libc++] Split a few utilities out of __threading_support 2022-01-18 12:23:44 -05:00
__tree [libc++] Use addressof in assignment operator. 2021-10-07 18:10:47 +02:00
__tuple [libc++] Enable the optimized _IsSame on GCC as well as Clang. 2021-12-15 20:19:56 -05:00
__undef_macros [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
algorithm [libc++][ranges] Add ranges::in_in_result 2022-01-14 02:56:33 +01:00
any [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
array [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
atomic Omit atomic_{,un}signed_lock_free if unsupported 2022-01-27 14:29:08 -08:00
barrier [libc++] Split a few utilities out of __threading_support 2022-01-18 12:23:44 -05:00
bit [libc++] Disable _LIBCPP_DEBUG_ASSERT during constant evaluation 2021-12-17 11:15:53 +01:00
bitset [libc++] Alphabetize header #includes. NFCI. 2022-01-10 16:30:38 -05:00
cassert [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
ccomplex [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
cctype [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
cerrno [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
cfenv [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
cfloat [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
charconv Microsoft's floating-point to_chars powered by Ryu and Ryu Printf 2021-12-12 16:34:50 +01:00
chrono [libc++] Split a few utilities out of __threading_support 2022-01-18 12:23:44 -05:00
cinttypes [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
ciso646 [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
climits [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
clocale [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
cmath [libc++] Alphabetize header #includes. NFCI. 2022-01-10 16:30:38 -05:00
codecvt [libc++] Add the version header to all headers. 2022-01-04 19:50:59 +01:00
compare [libc++] [P1614] Implement the second half of [cmp.alg]: compare_{strong,weak,partial}_fallback. 2022-01-27 17:48:01 -05:00
complex [libc++][NFC] Update namespace comments in include/ 2021-12-02 21:06:59 +01:00
complex.h [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
concepts [libc++][NFC] Move concepts to a subheader. 2021-09-02 19:22:15 +02:00
condition_variable [libc++] Add the version header to all headers. 2022-01-04 19:50:59 +01:00
coroutine [libc++] Alphabetize header #includes. NFCI. 2022-01-10 16:30:38 -05:00
csetjmp [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
csignal [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
cstdarg [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
cstdbool [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
cstddef [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
cstdint [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
cstdio [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
cstdlib [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
cstring [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
ctgmath [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
ctime [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
ctype.h [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
cwchar [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
cwctype [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
deque [libcxx][NFC] Make sequence containers slightly more SFINAE-friendly during CTAD. 2021-12-01 11:56:51 -08:00
errno.h [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
exception [libc++][NFC] Update namespace comments in include/ 2021-12-02 21:06:59 +01:00
execution [libc++] Add the version header to all headers. 2022-01-04 19:50:59 +01:00
fenv.h [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
filesystem [libc++] Alphabetize header #includes. NFCI. 2022-01-10 16:30:38 -05:00
float.h [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
format [libc++][format] Finish P0645 Text Formatting. 2022-01-24 20:10:14 +01:00
forward_list [libcxx][NFC] Make sequence containers slightly more SFINAE-friendly during CTAD. 2021-12-01 11:56:51 -08:00
fstream [libc++] Add the version header to all headers. 2022-01-04 19:50:59 +01:00
functional [libc++] Alphabetize header #includes. NFCI. 2022-01-10 16:30:38 -05:00
future [libc++] Add the version header to all headers. 2022-01-04 19:50:59 +01:00
initializer_list [libc++][NFC] Update namespace comments in include/ 2021-12-02 21:06:59 +01:00
inttypes.h [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
iomanip [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
ios [libc++] Add the version header to all headers. 2022-01-04 19:50:59 +01:00
iosfwd [libc++] Add the version header to all headers. 2022-01-04 19:50:59 +01:00
iostream [libc++] Add the version header to all headers. 2022-01-04 19:50:59 +01:00
istream [libc++] `= delete` member functions with // = delete; 2021-12-08 19:29:44 +01:00
iterator [libc++] Alphabetize header #includes. NFCI. 2022-01-10 16:30:38 -05:00
latch [libc++] Add the version header to all headers. 2022-01-04 19:50:59 +01:00
limits [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
limits.h [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
list [libc++] Introduce __debug_db_insert_i() 2022-01-17 20:31:21 +01:00
locale [libc++] Use reserved identifier for template parameter 2022-01-18 19:20:25 +00:00
locale.h [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
map [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
math.h [libc++] Alphabetize header #includes. NFCI. 2022-01-10 16:30:38 -05:00
memory [libc++][ranges] Implement `construct_at` and `destroy{,_at}`. 2022-01-12 16:01:04 -08:00
module.modulemap [libc++] [P1614] Implement the second half of [cmp.alg]: compare_{strong,weak,partial}_fallback. 2022-01-27 17:48:01 -05:00
mutex [libc++] `= delete` member functions with // = delete; 2021-12-08 19:29:44 +01:00
new [libc++][NFC] Update namespace comments in include/ 2021-12-02 21:06:59 +01:00
numbers [libc++] _Uglify some template parameter names. NFCI. 2022-01-14 10:32:04 -05:00
numeric [libcxx][modularisation] modularises <numeric> header 2021-12-01 20:40:21 +00:00
optional [libc++] _Uglify some template parameter names. NFCI. 2022-01-14 10:32:04 -05:00
ostream [libc++] `= delete` member functions with // = delete; 2021-12-08 19:29:44 +01:00
queue [libc++] Implement P1425R4 (Iterator pair constructors for std::stack and std::queue) 2022-01-06 18:55:11 +01:00
random [libc++] Add the version header to all headers. 2022-01-04 19:50:59 +01:00
ranges [libc++] [ranges] Implement P2415R2 owning_view. 2022-01-13 12:29:41 -05:00
ratio [libc++] Add the version header to all headers. 2022-01-04 19:50:59 +01:00
regex [SystemZ][z/OS] ASCII/EBCDIC support with no coexistence 2022-01-14 11:37:09 -05:00
scoped_allocator [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
semaphore [libc++] Split a few utilities out of __threading_support 2022-01-18 12:23:44 -05:00
set [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
setjmp.h [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
shared_mutex [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
span [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
sstream [libc++] Add the version header to all headers. 2022-01-04 19:50:59 +01:00
stack [libc++] Implement P1425R4 (Iterator pair constructors for std::stack and std::queue) 2022-01-06 18:55:11 +01:00
stdbool.h [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
stddef.h [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
stdexcept [libc++] Alphabetize header #includes. NFCI. 2022-01-10 16:30:38 -05:00
stdint.h [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
stdio.h [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
stdlib.h [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
streambuf [libc++] Modularize <chrono> 2022-01-14 09:55:29 -05:00
string [libc++] Remove std::basic_string's base class in ABIv2 2022-01-25 00:21:53 +01:00
string.h [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
string_view [libc++] Fix the return value of max_size() 2021-12-06 13:53:25 -05:00
strstream [libc++] Add the version header to all headers. 2022-01-04 19:50:59 +01:00
system_error [libc++] Add the version header to all headers. 2022-01-04 19:50:59 +01:00
tgmath.h [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
thread [libc++] Split a few utilities out of __threading_support 2022-01-18 12:23:44 -05:00
tuple [libc++][P2321R2] Add specializations of basic_common_reference and common_type for tuple 2022-01-17 19:49:57 +01:00
type_traits [libc++] _Uglify some template parameter names. NFCI. 2022-01-14 10:32:04 -05:00
typeindex [libc++] Add the version header to all headers. 2022-01-04 19:50:59 +01:00
typeinfo [libc++][NFC] Update namespace comments in include/ 2021-12-02 21:06:59 +01:00
unordered_map [libc++] Use addressof in unordered_map. 2022-01-21 20:43:45 +01:00
unordered_set [libc++] Use addressof in unordered_set. 2022-01-22 11:41:13 +01:00
utility [libc++] [ranges] Introduce _LIBCPP_AUTO_CAST(x) for auto(x). 2021-12-22 12:29:42 -05:00
valarray [libc++] Add the version header to all headers. 2022-01-04 19:50:59 +01:00
variant [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
vector [libc++][NFC] Use _LIBCPP_DEBUG_ASSERT in <vector> 2022-01-17 19:28:16 +01:00
version [libc++] Fix LWG3437 "__cpp_lib_polymorphic_allocator is in the wrong header" 2022-01-23 10:30:09 -05:00
wchar.h [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00
wctype.h [runtimes][NFC] Remove filenames at the top of the license notice 2021-11-17 16:30:52 -05:00