20.11.7.2/1 начинается:
Объекты класса
steady_clock
представляют часы, для которых значенияtime_point
никогда не уменьшается как
физическое время прогрессирует и для каких значенийtime_point
продвигаться в
устойчивая скорость относительно реального времени. То есть часы могут не быть
отрегулированы.
В принципе, это прекрасно, но, учитывая, что почти наверняка будет ограниченное количество битов для представления момента времени, сложно представить реализацию, в которой значение устойчивых часов просто продолжает расти вечно.
20.11.3 / 2, кажется, подтверждает мою нехватку воображения, потому что это ссылается (в ненормативной записке) на часы, «вращающиеся вокруг». Это говорит о том, что если у меня есть time_point t1
и позже time_point t2
взяты из тех же самых устойчивых часов, t2
может появиться раньше времени, потому что часы могли t1
а также t2
,
Мне очень трудно разобраться в стандарте в этой области. Может ли кто-нибудь прояснить отношения и взаимодействие устойчивых часов и их упаковки?
Пожалуйста, отправьте отчет об ошибке, когда вы действительно станете свидетелем steady_clock
перекатывать. В моей системе, если я не перезагружу свой компьютер в течение следующих 292 лет, это произойдет в 2305 году. Извините, если я не отвечаю в это время. 🙂
Если не вдаваться в подробности, реализация должна поддерживать достаточно большую битовую длину, чтобы в течение практического промежутка времени не наблюдалось свертывание тактового сигнала. Подсчет наносекунд в 64-битном целом числе от времени загрузки компьютера является одной из разумных реализаций этого.
Других решений пока нет …