Title
`std::nullopt_t` should be comparable
Status
new
Section
[optional.nullopt]
Submitter
Barry Revzin

Created on 2025-12-21.00:00:00 last changed 2 weeks ago

Messages

Date: 2026-02-15.00:00:00

[ 2026-02-18; Reflector poll. ]

Set priority to 2 after reflector poll.

Discussion whether this needs LEWG approval. Paper P2405, for which the nullopt part received LEWG support, is relevant here.

Date: 2025-12-21.00:00:00

`std::nullopt_t` currently has no comparison operators. This prevents perfectly reasonable code from working, like `ranges::find(v, nullopt)` where `v` is a vector<optional<T>>, for no good reason.

Additionally, optional<T> has the full set of comparisons. But optional<T> is conceptually a variant<nullopt_t, T>, which wouldn't be comparable... because of `nullopt_t`. Other empty types like tuple<> and `monostate` are also comparable.

Proposed resolution: Add a defaulted member operator<=> to `nullopt_t`.

History
Date User Action Args
2026-02-18 14:59:59adminsetmessages: + msg15946
2025-12-21 00:00:00admincreate