On Tue, Dec 5, 2023 at 10:16 PM Martin Uecker <uec...@tugraz.at> wrote: > > Am Dienstag, dem 05.12.2023 um 21:08 +0000 schrieb Joseph Myers: > > On Mon, 4 Dec 2023, Martin Uecker wrote: > > > > > > The key feature of lambdas (which failed to make it into C23) for this > > > > purpose is that you can't convert them to function pointers, which > > > > eliminates any need for trampolines. > > > > > > And also makes them useful only for template-like macro programming, > > > but not much else. So my understanding was that this needs to be > > > addressed at some point. > > > > Where "addressed" probably means some kind of callable object that stores > > more than just a function pointer in order to be able to encapsulate both > > the code address of a lambda and the context it needs to receive > > implicitly. So still not needing trampolines. > > Yes, a wide function pointer type similar to C++'s std::function. > > This would also be a way to eliminate the need for trampolines > for GCC's nested function.
And conversion to ordinary function pointer types would be still possible by using (on heap) trampolines then and would offer backward compatibility. I wonder how much implementation work would it be to add the wide function pointer types (please hide details in the C frontend). Richard. > Martin > > >