MSVC really does need an intermediate int cast