在没有单调时钟的系统上是否符合要求?

时间:2012-11-22 17:20:11

标签: c++ time c++11 implementation chrono

<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

1 个答案:

答案 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>标头提供可以在其中实现的所有内容,而不是其余内容。