Здравствуйте, B0FEE664, Вы писали:
BFE>или эту проверку надо делать как-то иначе? Или она не имеет смысла?
Цитата из одной популярной реализации:
// Why nanosecond resolution as the default?
// Why have std::system_clock always count in the higest
// resolution (ie nanoseconds), even if on some OSes the low 3
// or 9 decimal digits will be always zero? This allows later
// implementations to change the system_clock::now()
// implementation any time to provide better resolution without
// changing function signature or units.
То есть вышеприведённая проверка не может всегда отловить неточные часы — steady_clock::period будет соответствовать наносекундам, но сами часы могут считать в секундах (заполняя 9 последних цифр нулями).
Так libstd++ и libc++ всегда безусловно возвращают наносекунды, вне зависимости от реальной точности часов — как минимум с этими реализациями проверка точно бесполезна.
День добрый!
Существуют ли в стандарте гарантии, что период steady_clock меньше одной секунды?
Имеет ли смысл следующий ассёрт:
static_assert(std::ratio_less<std::chrono::steady_clock::period, std::chrono::seconds::period>::value, "the period is too big");
или эту проверку надо делать как-то иначе? Или она не имеет смысла?