Speculatively implement LWG-4139 [time.zone.leap] recursive constraint in <=>
#4902
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
LWG-4139 indicated constraint recursion in the current specification of the
operator<=>
forleap_second
andsys_time
, which is not yet revealed due to the bugs in MSVC and (old versions of) Clang.Although the proposed resolution is not shown in the LWG issue, I think the necessary changes are clear enough - just moving the operator functions from the synopsis of
<chrono>
to that ofstd::chrono::leap_second
and addingfriend
.This has been done in libstdc++ years ago (gcc-mirror/gcc@1736bf5), and recently in libc++ via LLVM-104713.