Какие гарантии дает стандарт C ++ для сужения преобразования типов типа double в int?
Это так же, как Java, как объяснено в Q31328190:
Нет, это не то же самое, что в Java. Если математический результат «усечь дробную часть» не может быть представлен целевым типом, поведение не определено.
Из 4.9 [conv.fpint] / 1 («Плавающие-интегральные преобразования»):
Значение типа с плавающей запятой может быть преобразовано в значение типа целого числа. Усечение преобразования; то есть дробная часть отбрасывается. Поведение не определено, если усеченное значение не может быть представлено в типе назначения.
Других решений пока нет …