Added a more realist template to create function pointers. Still not good enough as the intermediate types do not store correctly the function pointer and function pointer is not named using correct mangling