MSVC requires annotations on both declaration and definition of a function