Namespaces
Variants

std::chrono:: is_clock

From cppreference.net
Défini dans l'en-tête <chrono>
template < class T >
struct is_clock ;
(depuis C++20)

Si T satisfait aux exigences Clock , fournit la constante membre value égale à true . Pour tout autre type, value est false .

Aux fins de ce trait, la mesure dans laquelle une implémentation détermine qu'un type ne peut satisfaire aux Clock exigences n'est pas spécifiée, sauf qu'un type T ne peut être qualifié de Clock que s'il remplit toutes les conditions suivantes :

  • T::rep
  • T::period
  • T::duration
  • T::time_point
  • T::is_steady
  • T::now()
**Note:** Le contenu à l'intérieur des balises ` ` n'a pas été traduit conformément aux instructions, car il s'agit de termes spécifiques au C++ qui doivent rester en anglais pour préserver leur signification technique exacte.

Si le programme ajoute des spécialisations pour std::is_clock ou std::is_clock_v , le comportement est indéfini.

Table des matières

Paramètres du modèle

T - un type à vérifier

Modèle de variable d'assistance

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

Hérité de std:: integral_constant

Constantes membres

value
[static]
true si T satisfait les exigences de Clock , false sinon
(constante membre publique statique)

Fonctions membres

operator bool
convertit l'objet en bool , retourne value
(fonction membre publique)
operator()
(C++14)
retourne value
(fonction membre publique)

Types membres

Type Définition
value_type bool
type std:: integral_constant < bool , value >

Implémentation possible

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; // le type n'est pas vérifié
            T::now();     // le type de retour n'est pas vérifié
        }
struct is_clock<T> : std::true_type {};

Notes

Si T satisfait par ailleurs aux Clock requirements, mais que T::is_steady n'est pas de type const bool , ou que T::now() n'est pas de type T :: time_point , le résultat de is_clock_v<T> est non spécifié.

Exemple

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