# std::chrono::is_clock

From cppreference.com
< cpp‎ | chrono

Defined in header `<chrono>` |  |
template< class T > struct is_clock; |  |

If `T` satisfies the Clock requirements, provides the member constant `value` equal true. For any other type, `value` is false.

For the purpose of this trait, the extent to which an implementation determines that a type cannot meet the Clock requirements is unspecified, except that a minimum `T` shall not qualify as a Clock unless it meets all of the following conditions:

- The qualified-ids `T::rep`, `T::period`, `T::duration`, and `T::time_point` are all valid and each denotes a type;
- The expressions `T::is_steady` and `T::now()` are each well-formed when treated as an unevaluated operand.

The behavior of a program that adds specializations for `is_clock` is undefined.

### Template parameters

T | - | a type to check

### Helper variable template

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

## Inherited from std::integral_constant

### Member constants

value [static] | true if `T` satisfies the Clock requirements , false otherwise (public static member constant)

### Member functions

operator bool | converts the object to bool, returns `value` (public member function)
operator() (C++14) | returns `value` (public member function)

### Member types

Type | Definition
`value_type` | `bool`
`type` | std::integral_constant <bool, value>

### Possible implementation

    namespace detail {
        template<class, class = std::void_t<>>
        struct is_clock_impl : std::false_type {};
        template<class T>
        struct is_clock_impl<T, std::void_t<typename T::rep, typename T::period,
                                            typename T::duration, typename T::time_point,
                                            decltype(T::is_steady), decltype(T::now())>>
            : std::true_type {};
    }

    template<class T>
    struct is_clock : detail::is_clock_impl<T> {};

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/chrono/is_clock&oldid=104678"