<chrono>
заголовок определяет класс steady_clock
что представляет собой монотонные часы — то есть значение now()
никогда не уменьшается по мере увеличения физического времени. Этот класс не помечен как необязательный, но что произойдет, если реализация не сможет его реализовать, потому что он работает в системе без монотонного источника времени?
Взгляните на источник libstdc ++, в случае _GLIBCXX_USE_CLOCK_MONOTONIC
не определяется, steady_clock
определяется просто:
typedef system_clock steady_clock;
system_clock
не обязательно устойчивый, хотя, так что это может (и, вероятно, будет) нарушать требования steady_clock
,
Возможна ли соответствующая реализация C ++ 11 в системе без монотонного источника времени? Почему бы просто не сделать steady_clock
необязательно, как intX_t
типы?
Я полагаю, что такая система будет какой-то встроенной системой.
Ну такие системы Помидоры могут иметь автономные реализации, которые требуют только минимального подмножества стандартной библиотеки. <chrono>
не является частью этого минимального подмножества.
Это определено в §17.6.1.3 Отдельно стоящие реализации [соответствие]:
1 Определены два вида реализаций: состоялся а также отдельно стоящая (1.4). Для размещенной реализации это
Международный стандарт описывает набор доступных заголовков.2 Автономная реализация имеет определенный набор реализаций заголовков. Этот набор должен включать как минимум
заголовки показаны в таблице 16.
Таблица 16 содержит следующие заголовки: <ciso646>
, <cstddef>
, <cfloat>
, <limits>
, <climits>
, <cstdint>
, <cstdlib>
, <new>
, <typeinfo>
, <exception>
, <initializer_list>
, <cstdalign>
, <cstdarg>
, <cstdbool>
, <type_traits>
, а также <atomic>
,
Обратите внимание, что это не означает, что такая реализация не может обеспечить <chrono>
Заголовок со всем, что может быть реализовано в нем, но не остальное.
Других решений пока нет …