Как определить, доступен ли std :: chrono :: monotonic_clock? - PullRequest
5 голосов
/ 31 мая 2010

C ++ 0x N3092 утверждает, что monotonic_clock является необязательным:

20.10.5.2 Класс monotonic_clock [time.clock.monotonic]

  1. Объекты класса monotonic_clock представляют часы, для которых значения time_point никогда не уменьшаются по мере продвижения физического времени. monotonic_clock может быть синонимом system_clock, если system_clock :: is_monotonic имеет значение true.

  2. Класс monotonic_clock поддерживается условно.

Могу ли я использовать SFINAE или другую технику для определения класса черт, чтобы определить, определен ли monotonic_clock?

Если нет, то должен ли существовать стандартный макрос, указывающий, доступен ли monotonic_clock?

Ответы [ 2 ]

3 голосов
/ 24 сентября 2010

Не существует полностью соответствующего стандартам способа обнаружения присутствия std::chrono::monotonic_clock. Как было видно из обсуждений на comp.std.c ++, существует несколько нестандартных приемов, связанных с объявлением нового кода в пространстве имен std.

0 голосов
/ 02 июня 2010

Взгляните на BOOST_MPL_HAS_XXX_TRAIT_DEF и проверьте поток обнаружение элемента времени компиляции . Я знаю, что VisualStudio имеет нестандартное ключевое слово __if_exists, но AFAIK оно недоступно для других компиляторов.

...