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

Jos*_*eld 4 c++ time implementation c++11 c++-chrono

<chrono>报头定义类steady_clock表示单调时钟-即,的值now()永远不会降低作为物理时间增加.虽然这个类没有标记为可选,所以如果实现无法实现它会发生什么,因为它在没有单调时间源的系统上运行?

_GLIBCXX_USE_CLOCK_MONOTONIC未定义的情况下,查看libstdc ++源代码steady_clock只需通过以下方式定义:

typedef system_clock steady_clock;
Run Code Online (Sandbox Code Playgroud)

system_clock虽然不一定稳定,所以这可能(也可能会)打破要求steady_clock.

在没有单调时间源的系统上,C++ 11的符合实现是不可能的吗?为什么steady_clock不像intX_t类型那样选择?

R. *_*des 9

我想这样的系统将是某种嵌入式系统.

那么,这样的系统西红柿可以具有独立的实现,其仅需要标准库的最小子集.<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>可以在其中实现的所有内容的标头,而不能提供其余内容.