Является ли законным создание и использование std::chrono::duration<double>
с бесконечностью в качестве содержащегося значения, например?
std::chrono::duration<double>{ std::numeric_limits<double>::infinity() };
Будет ли он вести себя "как я ожидаю", сохраняя бесконечную ценность при добавлении или вычитании с другой продолжительностью?
Я перекопал cppreference, но единственное, что я нашел, обсуждая вопрос, - это страница на duration_cast
отмечающая, что:
Кастинг от продолжительности с плавающей запятой до целой продолжительности зависит от неопределенного поведения, когда значение с плавающей запятой является NaN, бесконечность или слишком велико, чтобы быть представимым целевым целым типом. В противном случае приведение к целочисленной длительности может быть усечено, как и любое static_cast для целочисленного типа.
что, по-видимому, подразумевает, что оно является законным, но только в произвольном порядке.
(Я использую тип для представления "Прошу разбудить меня за X секунд", а положительная бесконечность - полезный дозор, чтобы представить "Мне действительно все равно, когда я просыпаюсь")