Using the function pointer instead of the function type; this allows us to re-enable a warning in MSVC by default.