(int)std::numeric_limits<double>::infinity() даёт не бесконечность, а INT_MIN.
Как сконвертировать double в int так, чтобы значения обрезались по [INT_MIN; INT_MAX] и с нормальной обработкой inf?
upd: бесконечности для int нету, так что надо тупо обрезать по [INT_MIN; INT_MAX]