如何确定std :: chrono :: monotonic_clock是否可用?

时间:2010-05-30 23:44:34

标签: c++ c++11 clock

C ++ 0x N3092声明monotonic_clock是可选的:

  

20.10.5.2班级monotonic_clock [time.clock.monotonic]

     
      
  1. 类monotonic_clock的对象表示time_point的值随着物理时间的推移而不会减少的时钟。如果system_clock :: is_monotonic为true,monotonic_clock可能是system_clock的同义词。

  2.   
  3. 有条件地支持班级monotonic_clock。

  4.   

我可以使用SFINAE或其他技术定义特征类来确定是否定义了monotonic_clock?

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

2 个答案:

答案 0 :(得分:3)

没有完全符合标准的方法来检测std::chrono::monotonic_clock的存在。从对comp.std.c ++的讨论中可以明显看出,有一些非标准符合技术涉及在命名空间std中声明新代码。

答案 1 :(得分:0)

查看BOOST_MPL_HAS_XXX_TRAIT_DEF并查看帖子compile time member detection。我知道VisualStudio有一个非标准的关键字__if_exists,但AFAIK在其他编译器上不可用。