Oh, weird C++ minutia?
Apparently, literals that use scientific notation are assumed to be floating-point. So, like, 1e9 is of type double. It makes sense for negative exponents, but I'd been writing things like that expecting it to be one billion as an integer.