libc++ Spaceship Operator Status (operator<=>)

Overview

This document contains the status of the C++20 spaceship operator support in libc++. It is used to track both the status of the sub-projects of the effort and who is assigned to these sub-projects. This is imperative to effective implementation so that work is not duplicated and implementors are not blocked by each other.

If you are interested in contributing to this effort, please send a message to the #libcxx channel in the LLVM discord. Please do not start working on any of the assigned items below.

Sub-Projects in the Implementation Effort

Section Description Dependencies Assignee Complete
None Ruslan Arutyunyan Complete
None Arthur O’Dwyer Complete
[cmp.concept] Kent Ross Complete
[cmp.concept] Arthur O’Dwyer Complete
None Arthur O’Dwyer Complete [1]
[comparisons.three.way] Adrian Vogelsgesang Complete
None Adrian Vogelsgesang Complete
[comparisons.three.way] Chuanqi Xu Complete
[expos.only.func] Kent Ross Complete
[comparisons.three.way] Adrian Vogelsgesang Complete
None Adrian Vogelsgesang Complete
[expos.only.func] Kent Ross Complete
None Hristo Hristov Complete
None Kent Ross Complete
[comparisons.three.way] Adrian Vogelsgesang Complete
[comparisons.three.way] Adrian Vogelsgesang Complete
None Adrian Vogelsgesang Complete
None Mark de Wever Complete
None Mark de Wever Complete
None Nikolas Klauser In Progress
[alg.three.way] Nikolas Klauser In Progress
None Mark de Wever Complete
None Mark de Wever Complete
[expos.only.func]
Adrian Vogelsgesang
Hristo Hristov
Complete
[expos.only.func] Hristo Hristov Complete
[expos.only.func] Hristo Hristov Complete
[expos.only.func] Adrian Vogelsgesang Complete
[expos.only.func] Adrian Vogelsgesang In Progress
[expos.only.func] Hristo Hristov Complete
multiset
set
[expos.only.func] Hristo Hristov In Progress
None Hristo Hristov Complete
None Hristo Hristov In Progress
None Mikhail Maltsev Complete
None Arthur O’Dwyer Complete
None Zoe Carver Complete
[concepts.cmp] Arthur O’Dwyer Complete
[concepts.cmp] Arthur O’Dwyer Complete
ranges::elements_view::iterator
[concepts.cmp] Hui Xie Complete
chrono::duration None Hristo Hristov Complete
chrono::time_point None Hristo Hristov Complete
None Mark de Wever Complete
chrono::time_zone
chrono::leap_second
chrono::time_zone_link
A <chrono> implementation Unassigned Not Started
None Adrian Vogelsgesang Complete
None Adrian Vogelsgesang Complete
None Adrian Vogelsgesang Complete
None Mark de Wever Complete
None Adrian Vogelsgesang Complete

Note

[1]std::strong_order(long double, long double) is not yet implemented.

Misc. Items and TODOs

(Note: files with required updates will contain the TODO at the beginning of the list item so they can be easily found via global search.)

Paper and Issue Status

Number Name Status First released version
P1614R2 The Mothership has Landed In Progress  
P2404R0 Relaxing equality_comparable_with’s, totally_ordered_with’s, and three_way_comparable_with’s common reference requirements to support move-only types    
LWG3330 Include <compare> from most library headers Complete 13.0
LWG3347 std::pair<T, U> now requires T and U to be less-than-comparable Nothing To Do  
LWG3350 Simplify return type of lexicographical_compare_three_way Nothing To Do  
LWG3360 three_way_comparable_with is inconsistent with similar concepts Nothing To Do  
LWG3380 common_type and comparison categories Nothing To Do  
LWG3395 Definition for three-way comparison needs to be updated Nothing To Do