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
类型那样选择?
我想这样的系统将是某种嵌入式系统.
那么,这样的系统西红柿可以具有独立的实现,其仅需要标准库的最小子集.<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>
可以在其中实现的所有内容的标头,而不能提供其余内容.