chrono::steady_clock
состоит из типов 4 членов: rep
, period
, duration
и timepoint
.
chrono::stead_clock::duration
является chrono::duration<rep,period>
. chrono::steady_clock::period
- ratio
.
Да.
Как типы chrono::stead_clock::duration
и chrono::steady_clock::period
определяется?
Они несколько специфичны для реализации, но между этими типами существуют ограничения и инварианты.
1.
rep
должен быть довольно хорошо подобранным арифметическим типом. Он должен иметь конструктор по умолчанию, конструктор копирования, назначение копии и имеет не удивительную семантику и не генерирует исключений. Стандарт de facto заключается в том, что все steady_clock::rep
имеют встроенные 64-битные типы.
2.
period
в значительной степени в воздухе. При этом VS, libstdC++ и libC++ имеют steady_clock::period
, установленный в nano
.
3.
duration
должны иметь очень специфические отношения к rep
и period
: is_same<duration, chrono::duration<rep, period>>{}
является true_type
. Неважно, если вы сначала укажете duration
и выведите rep
и period
из этого, или наоборот. Но инвариант должен иметь место.
4.
time_point
должно быть экземпляром std::chrono::time_point
с продолжительностью duration
. Неизвестно, что такое часы time_point
. Однако какой тип это часы, он должен иметь ту же эпоху, что и steady_clock
. Это, возможно, дефект и должно иметь ограничение, что steady_clock::time_point::clock
- steady_clock
. Стандарт де-факто заключается в том, что это ограничение имеет место.
Итак, если я использую Visual Studio, и я использую '#include', означает ли это, что' chrono' реализован Microsoft? –
user3731622
Для std :: chrono :: clocks требуется время_почта/продолжительности на основе подписанных интегральных типов, диапазон которых не менее +/- 292 года. Это требование не ставится на программируемые часы. –
@ пользователь3731622 да – David