ebc464940d
The std::jthread::get_id() function was missing a return statement. The is_invocable check needs to be done using decayed types, as they'll be forwarded to std::invoke as rvalues. Also reduce header dependencies for the <thread> header. We don't need to include <functional> for std::jthread because <bits/invoke.h> is already included, which defines std::__invoke. We can also remove <bits/functexcept.h> which isn't used at all. Finally, when _GLIBCXX_HAS_GTHREADS is not defined there's no point including any other headers, since we're not going to define anything in <thread> anyway. * include/std/thread: Reduce header dependencies. (jthread::get_id()): Add missing return. (jthread::get_stop_token()): Avoid unnecessary stop_source temporary. (jthread::_S_create): Check is_invocable using decayed types. Add static assertion. * testsuite/30_threads/jthread/1.cc: Add dg-require-gthreads. * testsuite/30_threads/jthread/2.cc: Likewise. * testsuite/30_threads/jthread/3.cc: New test. * testsuite/30_threads/jthread/jthread.cc: Add missing directives for pthread and gthread support. Use VERIFY instead of assert. From-SVN: r278402 |
||
---|---|---|
.. | ||
async | ||
call_once | ||
condition_variable | ||
condition_variable_any | ||
future | ||
headers | ||
jthread | ||
lock | ||
lock_guard | ||
mutex | ||
once_flag/cons | ||
packaged_task | ||
promise | ||
recursive_mutex | ||
recursive_timed_mutex | ||
scoped_lock | ||
shared_future | ||
shared_lock | ||
shared_mutex | ||
shared_timed_mutex | ||
stop_token | ||
this_thread | ||
thread | ||
timed_mutex | ||
try_lock | ||
unique_lock |