Check is_clock_v
for thread utilities before C++20
#4585
Merged
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.
This PR generalizes #1687 to C++14/17 modes and reimplements
is_clock_v
with arequires
-expression. Towards #602.In N4659 [time.point]/1, the
Clock
template parameter was required to meet the Clock (Cpp17Clock now) requirements. The requirement was changed by WG21-P0355R7 in C++20 and removed by WG21-P2212R2 in C++23.All involved thread functions take a
time_point
parameter, so it was already invalid (probably UB) in C++11 to use these functions with an invalidtime_point
type. Static checking seems OK to me as we've been statically assertingis_standard_layout_v
andis_trivial_v
forbasic_string
.