| Issue |
167071
|
| Summary |
[libc++] P0355R7: Reject misused `Clock` type for which `is_clock_v<Clock>` is `false` for multi-threading components
|
| Labels |
libc++,
c++20,
threading,
chrono
|
| Assignees |
|
| Reporter |
frederick-vs-ja
|
**Link:** https://wg21.link/p0355r7, https://eel.is/c++draft/thread.req.paramname
Affected components:
- [ ] `this_thread::sleep_until` [[thread.thread.this]](https://eel.is/c++draft/thread.thread.this)
- [ ] `timed_mutex::try_lock_until` [[thread.timedmutex.recursive]](https://eel.is/c++draft/thread.timedmutex.recursive)
- [ ] `recursive_timed_mutex::try_lock_until` [[thread.timedmutex.recursive]](https://eel.is/c++draft/thread.timedmutex.recursive)
- [ ] `shared_timed_mutex::try_lock_until` [[thread.sharedtimedmutex.class]](https://eel.is/c++draft/thread.sharedtimedmutex.class)
- [ ] `shared_timed_mutex::try_lock_shared_until` [[thread.sharedtimedmutex.class]](https://eel.is/c++draft/thread.sharedtimedmutex.class)
- [ ] `unique_lock`'s constructor from `time_point` [[thread.lock.unique.cons]](https://eel.is/c++draft/thread.lock.unique.cons)
- [ ] `unique_lock::try_lock_until` [[thread.lock.unique.locking]](https://eel.is/c++draft/thread.lock.unique.locking)
- [ ] `shared_lock`'s constructor from `time_point` [[thread.lock.shared.cons]](https://eel.is/c++draft/thread.lock.shared.cons)
- [ ] `shared_lock::try_lock_until` [[thread.lock.shared.locking]](https://eel.is/c++draft/thread.lock.shared.locking)
- [ ] `condition_variable::wait_until` [[thread.condition.condvar]](https://eel.is/c++draft/thread.condition.condvar)
- [ ] `condition_variable_any::wait_until` [[thread.condvarany.wait]](https://eel.is/c++draft/thread.condvarany.wait), [[thread.condvarany.intwait]](https://eel.is/c++draft/thread.condvarany.intwait)
- [ ] `counting_semaphore::try_acquire_until` [[thread.sema.cnt]](https://eel.is/c++draft/thread.sema.cnt)
- [ ] `future::wait_until` [[futures.unique.future]](https://eel.is/c++draft/futures.unique.future)
- [ ] `shared_future::wait_until` [[futures.shared.future]](https://eel.is/c++draft/futures.shared.future)
Remarks:
- We should _not_ reject non-clock types in `time_point`, per [P2212R2](https://wg21.link/p2212r2).
- `is_clock_v` is a C++20 feature, but most of affected components have been present before C++20. So we should either
- guard the `static_assert`'s with `_LIBCPP_STD_VER >= 20`, or
- create an equivalent internal variable template and use it in `static_assert`'s before C++20.
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs