MSVC doesn't like using and function types