[libc++] [P1614] Implement [cmp.alg]'s std::{strong,weak,partial}_order.
authorArthur O'Dwyer <arthur.j.odwyer@gmail.com>
Thu, 29 Jul 2021 02:04:18 +0000 (22:04 -0400)
committerArthur O'Dwyer <arthur.j.odwyer@gmail.com>
Mon, 22 Nov 2021 18:24:28 +0000 (13:24 -0500)
commitd8380ad977e94498e170b06449c81f1fc27da7b5
tree3cb3211d69334a6fd0f3aeb388c761ddce8ce1af
parent344cef6695e9af05ed9fa5bb96b3a475c7a4df4b
[libc++] [P1614] Implement [cmp.alg]'s std::{strong,weak,partial}_order.

This does not include `std::compare_*_fallback`; those are coming later.

There's still an open question of how to implement std::strong_order
for `long double`, which has 80 value bits and 48 padding bits on x86-64,
and which is presumably *not* IEEE 754-compliant on PPC64 and so on.
So that part is left unimplemented.

Differential Revision: https://reviews.llvm.org/D110738
17 files changed:
libcxx/docs/Status/Cxx20Issues.csv
libcxx/include/CMakeLists.txt
libcxx/include/__compare/partial_order.h [new file with mode: 0644]
libcxx/include/__compare/strong_order.h [new file with mode: 0644]
libcxx/include/__compare/weak_order.h [new file with mode: 0644]
libcxx/include/__utility/priority_tag.h [new file with mode: 0644]
libcxx/include/compare
libcxx/include/module.modulemap
libcxx/include/utility
libcxx/test/libcxx/diagnostics/detail.headers/compare/partial_order.module.verify.cpp [new file with mode: 0644]
libcxx/test/libcxx/diagnostics/detail.headers/compare/strong_order.module.verify.cpp [new file with mode: 0644]
libcxx/test/libcxx/diagnostics/detail.headers/compare/weak_order.module.verify.cpp [new file with mode: 0644]
libcxx/test/libcxx/diagnostics/detail.headers/utility/priority_tag.module.verify.cpp [new file with mode: 0644]
libcxx/test/std/language.support/cmp/cmp.alg/partial_order.pass.cpp [new file with mode: 0644]
libcxx/test/std/language.support/cmp/cmp.alg/strong_order.pass.cpp [new file with mode: 0644]
libcxx/test/std/language.support/cmp/cmp.alg/strong_order_long_double.verify.cpp [new file with mode: 0644]
libcxx/test/std/language.support/cmp/cmp.alg/weak_order.pass.cpp [new file with mode: 0644]