libstdc++: Define std::invoke_r for C++23 (P2136R3)
authorJonathan Wakely <jwakely@redhat.com>
Thu, 2 Sep 2021 10:54:12 +0000 (11:54 +0100)
committerJonathan Wakely <jwakely@redhat.com>
Thu, 2 Sep 2021 16:48:45 +0000 (17:48 +0100)
commit5b73abd1a5f44f72e36bc7aefd423816083291ea
tree955d31d7fe3d0dca21d8df8e0365b0a08cf6aefb
parent9695e1c23be5b5c55d572ced152897313ddb96ae
libstdc++: Define std::invoke_r for C++23 (P2136R3)

We already supported this feature as std::__invoke<R>, for internal use.
This just adds a public version of it to <functional>.

Internal uses should continue to include <bits/invoke.h> and use
std::__invoke<R> so that they don't need to include all of <functional>.

Signed-off-by: Jonathan Wakely <jwakely@redhat.com>
libstdc++-v3/ChangeLog:

* include/std/functional (invoke_r): Define.
* include/std/version (__cpp_lib_invoke_r): Define.
* testsuite/20_util/function_objects/invoke/version.cc: Check
for __cpp_lib_invoke_r as well as __cpp_lib_invoke.
* testsuite/20_util/function_objects/invoke/4.cc: New test.
libstdc++-v3/include/std/functional
libstdc++-v3/include/std/version
libstdc++-v3/testsuite/20_util/function_objects/invoke/4.cc [new file with mode: 0644]
libstdc++-v3/testsuite/20_util/function_objects/invoke/version.cc