Implement C++17 std::invoke and LWG DR 2219
authorJonathan Wakely <jwakely@redhat.com>
Sun, 25 Oct 2015 00:00:54 +0000 (01:00 +0100)
committerJonathan Wakely <redi@gcc.gnu.org>
Sun, 25 Oct 2015 00:00:54 +0000 (01:00 +0100)
commit93e954005f7c39b4cae859f6b2923267f22d6146
tree7872cf44a758569951ffa9af6f4e8e4f7f4956b7
parent6fbd5984000d529e88e83d2472d53218fc5e49b4
Implement C++17 std::invoke and LWG DR 2219

* include/std/functional (__invoke_impl): New overloads.
(__invoke): Replace with a single function calling __invoke_impl.
(invoke): Add C++17 std::invoke.
(reference_wrapper::operator()): Qualify call to __invoke.
(_Mem_fn_traits_base, _Mem_fn_traits): Remove unused typedefs.
(_Mem_fn_base): Remove unused typedefs and implement call operator in
terms of __invoke.
* include/std/future (__future_base::_Async_state_commonV2): Do not
pass reference_wrapper as object argument to call_once.
* include/std/type_traits (result_of): Define nested __invoke_type.
Handle reference_wrapper as per LWG 2219.
* testsuite/20_util/bind/ref_neg.cc: Adjust dg-error directives.
* testsuite/20_util/function_objects/mem_fn/55463.cc: Remove tests
using member functions of reference_wrapper.

From-SVN: r229290
libstdc++-v3/ChangeLog
libstdc++-v3/include/std/functional
libstdc++-v3/include/std/future
libstdc++-v3/include/std/type_traits
libstdc++-v3/testsuite/20_util/bind/ref_neg.cc
libstdc++-v3/testsuite/20_util/function_objects/mem_fn/55463.cc