I see the point. Out of curiosity, I thought up some approaches:
- disallow making function pointers of functions with default params
- require explicitly passing all params when used as a function pointer
- generate a trampoline function that generates the default params and use that as the function pointer
- somehow include the default param values as part of the function pointer type