Spec-Zone.ru › C++

std::chrono::is_clock

Определено в заголовке <chrono>
template< class T >
struct is_clock;
(с C++20)

Если T удовлетворяет требованиям Clock, предоставляет член-константу value, равную true. Для любого другого типа, value равно false.

В целях этого признака, степень, в которой реализация определяет, что тип не может удовлетворить требованиям Clock, не определена, за исключением того, что минимальное T не может квалифицироваться как Clock, если оно не удовлетворяет всем следующим условиям:

  • qualified-id T::rep, T::period, T::duration, и T::time_point — все являются допустимыми и каждый обозначает тип;
  • Выражения T::is_steady и T::now() являются правильно сформированными, когда рассматриваются как невычисляемые операнды.

Поведение программы, добавляющей специализации для std::is_clock или std::is_clock_v, не определено.

Параметры шаблона

T - тип для проверки

Вспомогательный шаблон переменной

template< class T >
inline constexpr bool is_clock_v = is_clock<T>::value;
(с C++20)

Унаследовано от std::integral_constant

Член-константы

value
[static]
true если T удовлетворяет требованиям Clock, false в противном случае
(общедоступная статическая член-константа)

Члены-функции

operator bool
преобразует объект в bool, возвращает value
(общедоступная член-функция)
operator()
(C++14)
возвращает value
(общедоступная член-функция)

Типы членов

Тип Определение
value_type bool
type std::integral_constant<bool, value>

Возможная реализация

template<class>
struct is_clock : std::false_type {};
 
template<class T>
    requires
        requires {
            typename T::rep;
            typename T::period;
            typename T::duration;
            typename T::time_point;
            T::is_steady;
            T::now();
        }
struct is_clock<T> : std::true_type {};

Пример

#include <chrono>
#include <ratio>
 
int main()
{
    static_assert
    (
        std::chrono::is_clock_v<std::chrono::utc_clock>
        and
        not std::chrono::is_clock_v<std::chrono::duration<int, std::exa>>
    );
}

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/chrono/is_clock

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API