https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102567
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |INVALID Status|UNCONFIRMED |RESOLVED --- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- This is not a libstdc++ bug, we implement what the standard says. Maybe it used to compile, but it was meaningless. You could say it was a function of void() noexcept, but you could still store a target function that throwed, and its operator() could still throw. Both std::move_only_function (P0288) and std::function_ref (P0792) support using a function type that is optionally const-qualified and optionally noexcept, and it actually means something (it affects what you can store in there, and whether they can modify a stateful target object, and whether their operator() is noexcept or not). std::function is not going to get updated though.