llvm-project/libcxx/docs/Status/SpaceshipProjects.csv
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

7.4 KiB

1SectionDescriptionDependenciesAssigneeComplete
2| `[cmp.concept] <https://wg21.link/cmp.concept>`_| `three_way_comparable <https://reviews.llvm.org/D103478>`_ | `three_way_comparable_with <https://reviews.llvm.org/D103478>`_NoneRuslan Arutyunyan|Complete|
3| `[cmp.result] <https://wg21.link/cmp.result>`_| `compare_three_way_result <https://reviews.llvm.org/D103581>`_NoneArthur O'Dwyer|Complete|
4| `[expos.only.func] <https://wg21.link/expos.only.func>`_| `synth-three-way <https://reviews.llvm.org/D107721>`_ | `synth-three-way-result <https://reviews.llvm.org/D107721>`_[cmp.concept]Kent Ross|Complete|
5| `[comparisons.three.way] <https://wg21.link/comparisons.three.way>`_| `compare_three_way <https://reviews.llvm.org/D80899>`_[cmp.concept]Arthur O'Dwyer|Complete|
6| `[cmp.alg] <https://wg21.link/cmp.alg>`_| `strong_order <https://reviews.llvm.org/D110738>`_ | `weak_order <https://reviews.llvm.org/D110738>`_ | `partial_order <https://reviews.llvm.org/D110738>`_ | `strong_order_fallback <https://reviews.llvm.org/D111514>`_ | `weak_order_fallback <https://reviews.llvm.org/D111514>`_ | `partial_order_fallback <https://reviews.llvm.org/D111514>`_NoneArthur O'Dwyer|Complete| [#note-strongorder]_
7| `[alg.three.way] <https://wg21.link/alg.three.way>`_| `lexicographical_compare_three_way <https://reviews.llvm.org/D80902>`_[comparisons.three.way]Christopher Di Bella|In Progress|
8| `[coroutine.handle.compare] <https://wg21.link/coroutine.handle.compare>`_| `coroutine_handle <https://reviews.llvm.org/D109433>`_[comparisons.three.way]Chuanqi Xu|Complete|
9| `[pairs.spec] <https://wg21.link/pairs.spec>`_| `pair <https://reviews.llvm.org/D107721>`_[expos.only.func]Kent Ross|Complete|
10| `[syserr.errcat.nonvirtuals] <https://wg21.link/syserr.errcat.nonvirtuals>`_| error_category[comparisons.three.way]Unassigned|Not Started|
11| `[syserr.compare] <https://wg21.link/syserr.compare>`_| error_code | error_conditionNoneUnassigned|Not Started|
12| `[tuple.rel] <https://wg21.link/tuple.rel>`_| `tuple <https://reviews.llvm.org/D108250>`_[expos.only.func]Kent Ross|Complete|
13| `[optional.relops] <https://wg21.link/optional.relops>`_ | `[optional.nullops] <https://wg21.link/optional.nullops>`_ | `[optional.comp.with.t] <https://wg21.link/optional.comp.with.t>`_| optional | nulloptNoneKent Ross|In Progress|
14| `[variant.relops] <https://wg21.link/variant.relops>`_ | `[variant.monostate.relops] <https://wg21.link/variant.monostate.relops>`_| monostate | variantNoneKent Ross|In Progress|
15| `[unique.ptr.special] <https://wg21.link/unique.ptr.special>`_| unique_ptr[comparisons.three.way]Unassigned|Not Started|
16| `[util.smartptr.shared.cmp] <https://wg21.link/util.smartptr.shared.cmp>`_| shared_ptr[comparisons.three.way]Unassigned|Not Started|
17| `[type.index.members] <https://wg21.link/type.index.members>`_| type_indexNoneUnassigned|Not Started|
18| `[charconv.syn] <https://wg21.link/charconv.syn>`_| to_chars_resultNoneMark de Wever|Complete|
19| `[charconv.syn] <https://wg21.link/charconv.syn>`_| from_chars_resultNoneMark de Wever|Complete|
20| `[stacktrace.entry.cmp] <https://wg21.link/stacktrace.entry.cmp>`_| stacktrace_entryNoneUnassigned|Not Started|
21| `[stacktrace.basic.cmp] <https://wg21.link/stacktrace.basic.cmp>`_| basic_stacktrace[alg.three.way]Unassigned|Not Started|
22| `[string.cmp] <https://wg21.link/string.cmp>`_| `basic_string <https://reviews.llvm.org/D80895>`_NoneChristopher Di Bella|In Progress|
23| `[string.view.comparison] <https://wg21.link/string.view.comparison>`_| `basic_string_view <https://reviews.llvm.org/D80891>`_NoneChristopher Di Bella|In Progress|
24| `[array.syn] <https://wg21.link/array.syn>`_ (`general <https://wg21.link/container.requirements.general#14>`_)| array[expos.only.func]Unassigned|Not Started|
25| `[deque.syn] <https://wg21.link/deque.syn>`_ (`general <https://wg21.link/container.requirements.general#14>`_)| deque[expos.only.func]Unassigned|Not Started|
26| `[forward.list.syn] <https://wg21.link/forward.list.syn>`_ (`general <https://wg21.link/container.requirements.general#14>`_)| forward_list[expos.only.func]Unassigned|Not Started|
27| `[list.syn] <https://wg21.link/list.syn>`_ (`general <https://wg21.link/container.requirements.general#14>`_)| list[expos.only.func]Unassigned|Not Started|
28| `[vector.syn] <https://wg21.link/vector.syn>`_ (`general <https://wg21.link/container.requirements.general#14>`_)| vector[expos.only.func]Unassigned|Not Started|
29| `[associative.map.syn] <https://wg21.link/associative.map.syn>`_ (`general <https://wg21.link/container.requirements.general#14>`_)| map | multimap[expos.only.func]Unassigned|Not Started|
30| `[associative.set.syn] <https://wg21.link/associative.set.syn>`_ (`general <https://wg21.link/container.requirements.general#14>`_)| multiset | set[expos.only.func]Unassigned|Not Started|
31| `[queue.ops] <https://wg21.link/queue.ops>`_| queueNoneUnassigned|Not Started|
32| `[stack.ops] <https://wg21.link/stack.ops>`_| stackNoneUnassigned|Not Started|
33| `[reverse.iter.cmp] <https://wg21.link/reverse.iter.cmp>`_| reverse_iteratorNoneMikhail Maltsev|Complete|
34| `[move.iter.op.comp] <https://wg21.link/move.iter.op.comp>`_| move_iteratorNoneUnassigned|Not Started|
35| `[counted.iter.cmp] <https://wg21.link/counted.iter.cmp>`_| counted_iteratorNoneUnassigned|Not Started|
36| `[range.iota.iterator] <https://wg21.link/range.iota.iterator>`_| ranges::iota_view::iterator[concepts.cmp]Unassigned|Not Started|
37| `[range.transform.iterator] <https://wg21.link/range.transform.iterator>`_| ranges::transform_view::iterator[concepts.cmp]Unassigned|Not Started|
38| `[range.elements.iterator] <https://wg21.link/range.elements.iterator>`_| ranges::elements_view::iterator[concepts.cmp]Unassigned|Not Started|
39| `[time.duration.comparisons] <https://wg21.link/time.duration.comparisons>`_ | `[time.point.comparisons] <https://wg21.link/time.point.comparisons>`_ | `[time.cal.day.nonmembers] <https://wg21.link/time.cal.day.nonmembers>`_ | `[time.cal.month.nonmembers] <https://wg21.link/time.cal.month.nonmembers>`_ | `[time.cal.year.nonmembers] <https://wg21.link/time.cal.year.nonmembers>`_ | `[time.cal.md.nonmembers] <https://wg21.link/time.cal.md.nonmembers>`_ | `[time.cal.mdlast] <https://wg21.link/time.cal.mdlast>`_ | `[time.cal.ym.nonmembers] <https://wg21.link/time.cal.ym.nonmembers>`_ | `[time.cal.ymd.nonmembers] <https://wg21.link/time.cal.ymd.nonmembers>`_ | `[time.cal.ymdlast.nonmembers] <https://wg21.link/time.cal.ymdlast.nonmembers>`_ | `[time.zone.nonmembers] <https://wg21.link/time.zone.nonmembers>`_ | `[time.zone.leap.nonmembers] <https://wg21.link/time.zone.leap.nonmembers>`_ | `[time.zone.link.nonmembers] <https://wg21.link/time.zone.link.nonmembers>`_| chrono::duration | chrono::time_point | chrono::day | chrono::month | chrono::year | chrono::month_day | chrono::month_day_last | chrono::year_month | chrono::year_month_day | chrono::year_month_day_last | chrono::time_zone | chrono::leap_second | chrono::time_zone_linkNoneUnassigned|Not Started|
40| `[fs.path.nonmember] <https://wg21.link/fs.path.nonmember>`_| filesystem::pathNoneUnassigned|Not Started|
41| `[fs.dir.entry.obs] <https://wg21.link/fs.dir.entry.obs>`_| filesystem::directory_entryNoneUnassigned|Not Started|
42| `[re.submatch.op] <https://wg21.link/re.submatch.op>`_| sub_matchNoneUnassigned|Not Started|
43| `[thread.thread.id] <https://wg21.link/thread.thread.id>`_| thread::idNoneUnassigned|Not Started|