C++ 如何确定std::chrono::单调时钟是否可用?

C++ 如何确定std::chrono::单调时钟是否可用?,c++,c++11,clock,C++,C++11,Clock,C++0x N3092说明单调时钟是可选的: 20.10.5.2课堂单调时钟[时间.时钟.单调] “单调时钟”类的对象表示时间点的值不会随着物理时间的推移而减少的时钟。如果system_clock::is_monotonic为真,则单调_clock可能是system_clock的同义词 有条件地支持类单调时钟。 我可以使用SFINAE或其他技术来定义一个traits类来确定是否定义了单调时钟吗 如果没有,是否应该有一个标准宏来指示单调时钟是否可用?查看并检查线程。我知道VisualStudio有

C++0x N3092说明单调时钟是可选的:

20.10.5.2课堂单调时钟[时间.时钟.单调]

  • “单调时钟”类的对象表示时间点的值不会随着物理时间的推移而减少的时钟。如果system_clock::is_monotonic为真,则单调_clock可能是system_clock的同义词

  • 有条件地支持类单调时钟。

  • 我可以使用SFINAE或其他技术来定义一个traits类来确定是否定义了单调时钟吗


    如果没有,是否应该有一个标准宏来指示单调时钟是否可用?

    查看并检查线程。我知道VisualStudio有一个非标准的关键字
    (如果存在的话)
    ,但恐怕它在其他编译器上不可用。

    没有完全符合标准的方法来检测
    std::chrono::单调时钟的存在。从对COMP.ST.C++的讨论中可以看出,在命名空间<代码> STD中有一些非标准的一致性技术,我知道这一技术。主要问题是monotonic::clock不是类的成员,因此无法应用该技术(或者至少不能直接应用)。在这个过程中,尝试将支持的
    \u monotonic\u clock\u
    宏添加到标准中是否为时已晚?在我看来,应该始终有一种标准的方法来测试在给定的实现中是否实际支持有条件支持的特性。编辑:不过,现在我发现,也许LWG已经考虑过了,但决定不这么做?这对一般有条件支持的功能没有帮助,但实际上,
    单调时钟
    可能会被重命名为
    稳定时钟
    ,并且是必需的。看见