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)

Reply via email to