Assuming I have the following code in C++20, using the explicit template argument lambda functionality introduced in P0428:
auto f = []<auto val>(int a) { printf("%d", val + a); };
and I need a function pointer conversion for the lambda f to void(*)(int) with an explicitly specialized value (I need an explicit C ABI linkage there, member function calls will lead to different argument passing registers), given the fact that the following code is illegal:
using intfn = void(*)(int);
f.template operator intfn<400>(); // illegal
f.template operator()<400>(0); // legal, but not what I need: is a member function call
(seeing the answer to Is it possible to call templated user-defined conversion operator with explicit template arguments?)
... is there any other way to get a function pointer in the current C++ language, e.g. by using some sort of implicit conversion?