msvc do not support constexpr