Implement C++17 std::invoke and LWG DR 2219
authorredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 25 Oct 2015 00:00:54 +0000 (00:00 +0000)
committerredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 25 Oct 2015 00:00:54 +0000 (00:00 +0000)
commit50e770f67c61b6d6b63344adfc7d840276d0e7c5
tree7872cf44a758569951ffa9af6f4e8e4f7f4956b7
parentbd20ab52c6641016756077843e2bcb9f15b3a434
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229290 138bc75d-0d04-0410-961f-82ee72b054a4
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