https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107784
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2022-11-21 Ever confirmed|0 |1 --- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Jörg Richter from comment #2) > I think it should only change the size of std::_Bind_front. This type > should not be used at any ABI relevant border. But even if it is, I should > be possible to just rename the type? Right. It's an ABI change, but manageable. The problem is just that we have an empty tuple for the bound args, which would be solved by this (although ABI-preservation is needed as mentioned): --- a/libstdc++-v3/include/std/functional +++ b/libstdc++-v3/include/std/functional @@ -992,7 +992,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } _Fd _M_fd; - std::tuple<_BoundArgs...> _M_bound_args; + [[no_unique_address]] std::tuple<_BoundArgs...> _M_bound_args; }; template<typename _Fn, typename... _Args> But why are you using bind_front if you don't need to bind any args? I'm not sure this is a very important use case.