https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122022
Jonathan Wakely <redi at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |ncm at gcc dot gnu.org
Target Milestone|--- |16.0
Status|UNCONFIRMED |NEW
Ever confirmed|0 |1
Last reconfirmed| |2025-09-22
Version|15.0 |16.0
--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> ---
I guess we just want this, plus tests:
--- a/libstdc++-v3/include/std/functional
+++ b/libstdc++-v3/include/std/functional
@@ -929,7 +929,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
using _Fn = const decltype(__fn)&;
template <typename... _Args>
constexpr static decltype(auto)
- operator()(_Args... __args)
+ operator()(_Args&&... __args)
noexcept(is_nothrow_invocable_v<_Fn, _Args...>)
requires is_invocable_v<_Fn, _Args...>
{ return std::invoke(__fn, std::forward<_Args>(__args)...); }
@@ -1188,7 +1188,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
using _Fn = decltype(__fn);
if constexpr (is_pointer_v<_Fn> || is_member_pointer_v<_Fn>)
static_assert(__fn != nullptr);
- return []<typename... _Args>(_Args... __args) static
+ return []<typename... _Args>(_Args&&... __args) static
noexcept(noexcept(
!std::invoke(__fn, std::forward<_Args>(__args)...) ))
-> decltype(auto)