add function type for MSVC