<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
?
答案 0 :(得分:9)
我认为这样的系统将是某种嵌入式系统。
好吧,这样的系统西红柿可以有独立的实现,只需要标准库的最小子集。 <chrono>
不是该最小子集的一部分。
这在§17.6.1.3独立实施[合规]中定义:
1 定义了两种实现:托管和独立(1.4)。对于托管实现,这个 国际标准描述了可用标题集。
2 独立实现具有一组实现定义的标头。该套装至少应包括 标题如表16所示。
表16包含以下标题:<ciso646>
,<cstddef>
,<cfloat>
,<limits>
,<climits>
,<cstdint>
,{{1} },<cstdlib>
,<new>
,<typeinfo>
,<exception>
,<initializer_list>
,<cstdalign>
,<cstdarg>
,<cstdbool>
,和<type_traits>
。
请注意,这并不意味着这样的实现不能为<atomic>
标头提供可以在其中实现的所有内容,而不是其余内容。