functional
38.6 KB
-
Use INVOKE<R> in std::function, std::bind and std::packaged_task · 330b1747
As well as simpifying the code by removing duplication, this means that we only need to touch std::__invoke_r if we need to implement changes to INVOKE<R>, such as those in P0932R0. * include/bits/std_function.h (_Simple_type_wrapper): Remove. (_Function_handler): Remove partial specializations for void return types and pointers to member. (_Function_handler::_M_manager): Adapt to removal of _Simple_type_wrapper. (_Function_handler::_M_invoke): Use __invoke_r instead of __invoke. * include/std/functional (_Bind_result::__enable_if_void) (_Bind_result::__disable_if_void): Remove sfinae helpers. (_Bind_result::__call): Use __invoke_r and remove overloads for void return types. * include/std/future (__future_base::_Task_state::_M_run) (__future_base::_Task_state::_M_run_delayed): Use __invoke_r and change return type of lambda expressions. From-SVN: r271174
Jonathan Wakely committed