Возможна ли соответствующая реализация в системе без монотонных часов?

<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 типы?

4

Решение

Я полагаю, что такая система будет какой-то встроенной системой.

Ну такие системы Помидоры могут иметь автономные реализации, которые требуют только минимального подмножества стандартной библиотеки. <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> Заголовок со всем, что может быть реализовано в нем, но не остальное.

9

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]