Namespaces
Variants

Standard library header <chrono> (C++11)

From cppreference.net
Standard library headers

Cet en-tête fait partie de la bibliothèque de date et d'heure .

Table des matières

Inclusions

(C++20)
Support de l'opérateur de comparaison à trois voies

Classes

Durée
Défini dans l'espace de noms std::chrono
(C++11)
un intervalle de temps
(modèle de classe)
indique qu'une durée est convertible en durée avec une période de tick différente
(modèle de classe)
construit les valeurs zéro, min et max d'un compteur de ticks du type donné
(modèle de classe)
Typedefs de durée pratiques
Défini dans l'espace de noms std::chrono
std::chrono::nanoseconds (C++11) type de durée avec Période std::nano
std::chrono::microseconds (C++11) type de durée avec la période std::micro
std::chrono::milliseconds (C++11) type de durée avec la période std::milli
std::chrono::seconds (C++11) type de durée avec Période std:: ratio < 1 >
std::chrono::minutes (C++11) type de durée avec Période std:: ratio < 60 >
std::chrono::hours (C++11) type de durée avec Période std:: ratio < 3600 >
std::chrono::days (C++20) type de durée avec une Période std:: ratio < 86400 >
std::chrono::weeks (C++20) type de durée avec une Période std:: ratio < 604800 >
std::chrono::months (C++20) type de durée avec Période std:: ratio < 2629746 >
std::chrono::years (C++20) type de durée avec Période std:: ratio < 31556952 >
Point temporel
Défini dans l'espace de noms std::chrono
(C++11)
un point dans le temps
(modèle de classe)
classe de traits définissant comment convertir les points temporels d'une horloge vers une autre
(modèle de classe)
Horloges
Défini dans l'espace de noms std::chrono
détermine si un type est une Clock
(modèle de classe) (modèle de variable)
horloge murale provenant de l'horloge temps réel système
(classe)
horloge monotone qui ne sera jamais ajustée
(classe)
l'horloge avec la période de tic la plus courte disponible
(classe)
(C++20)
Clock pour le Temps Universel Coordonné (UTC)
(classe)
(C++20)
Clock pour le Temps Atomique International (TAI)
(classe)
(C++20)
Clock pour le temps GPS
(classe)
(C++20)
Clock utilisé pour file time
(typedef)
(C++20)
pseudo-horloge représentant l'heure locale
(classe)
Calendrier
Défini dans l'espace de noms std::chrono
(C++20)
classe d'indication du dernier jour ou jour de la semaine dans un mois
(classe)
(C++20)
représente un jour d'un mois
(classe)
(C++20)
représente un mois d'une année
(classe)
(C++20)
représente une année dans le calendrier grégorien
(classe)
(C++20)
représente un jour de la semaine dans le calendrier grégorien
(classe)
représente le n ème weekday d'un mois
(classe)
représente le dernier weekday d'un mois
(classe)
(C++20)
représente un day spécifique d'un month spécifique
(classe)
représente le dernier jour d'un month spécifique
(classe)
représente le n ème weekday d'un month spécifique
(classe)
représente le dernier weekday d'un month spécifique
(classe)
(C++20)
représente un month spécifique d'une year spécifique
(classe)
représente une year , month et day spécifiques
(classe)
représente le dernier jour d'une year et d'un month spécifiques
(classe)
représente le n ème weekday d'une year et d'un month spécifiques
(classe)
représente le dernier weekday d'une year et d'un month spécifiques
(classe)
Heure de la journée
Défini dans l'espace de noms std::chrono
(C++20)
représente une heure de la journée
(modèle de classe)
Fuseau horaire
Défini dans l'espace de noms std::chrono
(C++20)
décrit une copie de la base de données des fuseaux horaires IANA
(classe)
(C++20)
représente une liste chaînée de tzdb
(classe)
(C++20)
représente un fuseau horaire
(classe)
(C++20)
représente les informations sur un fuseau horaire à un point temporel particulier
(classe)
(C++20)
représente les informations sur une conversion d'heure locale en heure UNIX
(classe)
(C++20)
sélectionne comment une heure locale ambiguë doit être résolue
(enum)
classe de traits pour les pointeurs de fuseau horaire utilisés par zoned_time
(modèle de classe)
(C++20)
représente un fuseau horaire et un point temporel
(classe)
représente un nom alternatif pour un fuseau horaire
(classe)
exception levée pour signaler qu'une heure locale n'existe pas
(classe)
exception levée pour signaler qu'une heure locale est ambiguë
(classe)
Seconde intercalaire
Défini dans l'espace de noms std::chrono
contient des informations sur l'insertion d'une seconde intercalaire
(classe)
Informations d'insertion de seconde intercalaire
(classe)
Spécialisations
Défini dans l'espace de noms std
spécialise le trait std::common_type
(spécialisation de modèle de classe)
spécialise le trait std::common_type
(spécialisation de modèle de classe)
prise en charge du formatage pour duration
(spécialisation de modèle de classe)
prise en charge du formatage pour sys_time
(spécialisation de modèle de classe)
prise en charge du formatage pour utc_time
(spécialisation de modèle de classe)
prise en charge du formatage pour tai_time
(spécialisation de modèle de classe)
prise en charge du formatage pour gps_time
(spécialisation de modèle de classe)
prise en charge du formatage pour file_time
(spécialisation de modèle de classe)
prise en charge du formatage pour local_time
(spécialisation de modèle de classe)
prise en charge du formatage pour day
(spécialisation de modèle de classe)
prise en charge du formatage pour month
(spécialisation de modèle de classe)
prise en charge du formatage pour year
(spécialisation de modèle de classe)
prise en charge du formatage pour weekday
(spécialisation de modèle de classe)
prise en charge du formatage pour weekday_indexed
(spécialisation de modèle de classe)
prise en charge du formatage pour weekday_last
(spécialisation de modèle de classe)
prise en charge du formatage pour month_day
(spécialisation de modèle de classe)
prise en charge du formatage pour month_day_last
(spécialisation de modèle de classe)
prise en charge du formatage pour month_weekday
(spécialisation de modèle de classe)
prise en charge du formatage pour month_weekday_last
(spécialisation de modèle de classe)
prise en charge du formatage pour year_month
(spécialisation de modèle de classe)
prise en charge du formatage pour year_month_day
(spécialisation de modèle de classe)
prise en charge du formatage pour year_month_day_last
(spécialisation de modèle de classe)
prise en charge du formatage pour year_month_weekday
(spécialisation de modèle de classe)
prise en charge du formatage pour year_month_weekday_last
(spécialisation de modèle de classe)
prise en charge du formatage pour hh_mm_ss
(spécialisation de modèle de classe)
prise en charge du formatage pour sys_info
(spécialisation de modèle de classe)
prise en charge du formatage pour local_info
(spécialisation de modèle de classe)
prise en charge du formatage pour zoned_time
(spécialisation de modèle de classe)
prise en charge du hachage pour std::chrono::duration
(spécialisation de modèle de classe)
prise en charge du hachage pour std::chrono::time_point
(spécialisation de modèle de classe)
Prise en charge du hachage pour std::chrono::day
(spécialisation de modèle de classe)
Prise en charge du hachage pour std::chrono::month
(spécialisation de modèle de classe)
prise en charge du hachage pour std::chrono::year
(spécialisation de modèle de classe)
prise en charge du hachage pour std::chrono::weekday
(spécialisation de modèle de classe)
prise en charge du hachage pour std::chrono::weekday_indexed
(spécialisation de modèle de classe)
prise en charge du hachage pour std::chrono::weekday_last
(spécialisation de modèle de classe)
prise en charge du hachage pour std::chrono::month_day
(spécialisation de modèle de classe)
Prise en charge du hachage pour std::chrono::month_day_last
(spécialisation de modèle de classe)
Prise en charge du hachage pour std::chrono::month_weekday
(spécialisation de modèle de classe)
prise en charge du hachage pour std::chrono::month_weekday_last
(spécialisation de modèle de classe)
prise en charge du hachage pour std::chrono::year_month
(spécialisation de modèle de classe)
prise en charge du hachage pour std::chrono::year_month_day
(spécialisation de modèle de classe)
prise en charge du hachage pour std::chrono::year_month_day_last
(spécialisation de modèle de classe)
Prise en charge du hachage pour std::chrono::year_month_weekday
(spécialisation de modèle de classe)
prise en charge du hachage pour std::chrono::year_month_weekday_last
(spécialisation de modèle de classe)
Prise en charge du hachage pour std::chrono::zoned_time
(spécialisation de modèle de classe)
prise en charge du hachage pour std::chrono::leap_second
(spécialisation de modèle de classe)
Déclarations anticipées
Défini dans l'en-tête <functional>
(C++11)
objet fonction de hachage
(modèle de classe)

Fonctions

Durée
Défini dans l'espace de noms std::chrono
implémente les opérations arithmétiques avec des durées comme arguments
(modèle de fonction)
(C++11) (C++11) (supprimé en C++20) (C++11) (C++11) (C++11) (C++11) (C++20)
compare deux durées
(modèle de fonction)
convertit une durée en une autre, avec un intervalle de graduation différent
(modèle de fonction)
convertit une durée en une autre, en arrondissant vers le bas
(modèle de fonction)
convertit une durée en une autre, en arrondissant vers le haut
(modèle de fonction)
convertit une durée en une autre, en arrondissant au plus proche, les égalités vers la valeur paire
(modèle de fonction)
obtient la valeur absolue de la durée
(modèle de fonction)
Point temporel
Défini dans l'espace de noms std::chrono
effectue des opérations d'addition et de soustraction impliquant un point temporel
(modèle de fonction)
(C++11) (C++11) (supprimé en C++20) (C++11) (C++11) (C++11) (C++11) (C++20)
compare deux points temporels
(modèle de fonction)
convertit un point temporel en un autre point temporel sur la même horloge, avec une durée différente
(modèle de fonction)
convertit un time_point en un autre, en arrondissant vers le bas
(modèle de fonction)
convertit un time_point en un autre, en arrondissant vers le haut
(modèle de fonction)
convertit un time_point en un autre, en arrondissant au plus proche, les égalités vers le pair
(modèle de fonction)
analyse un sys_time à partir d'un flux selon le format fourni
(modèle de fonction)
analyse un utc_time à partir d'un flux selon le format fourni
(modèle de fonction)
analyse un tai_time à partir d'un flux selon le format fourni
(modèle de fonction)
analyse un gps_time à partir d'un flux selon le format fourni
(modèle de fonction)
analyse un file_time à partir d'un flux selon le format fourni
(modèle de fonction)
analyse un local_time depuis un flux selon le format fourni
(modèle de fonction)
(C++20)
convertir les points temporels d'une horloge vers une autre
(modèle de fonction)
Calendrier
Défini dans l'espace de noms std::chrono
compare deux valeurs day
(fonction)
compare deux valeurs month
(fonction)
compare deux valeurs year
(fonction)
(C++20)
compare deux valeurs weekday
(fonction)
(C++20)
compare deux valeurs weekday_indexed
(fonction)
(C++20)
compare deux valeurs weekday_last
(fonction)
compare deux valeurs month_day
(fonction)
compare deux valeurs month_day_last
(fonction)
(C++20)
compare deux valeurs month_weekday
(fonction)
(C++20)
compare deux valeurs month_weekday_last
(fonction)
compare deux valeurs year_month
(fonction)
compare deux valeurs year_month_day
(fonction)
compare deux valeurs year_month_day_last
(fonction)
(C++20)
compare deux valeurs year_month_weekday
(fonction)
(C++20)
compare deux valeurs year_month_weekday_last
(fonction)
ajoute ou soustrait un nombre de jours et un day , ou trouve la différence entre deux day s
(fonction)
effectue des opérations arithmétiques sur les month s
(fonction)
effectue des opérations arithmétiques sur les year s
(fonction)
effectue des opérations arithmétiques sur les weekday s
(fonction)
effectue des opérations arithmétiques sur year_month
(fonction)
ajoute ou soustrait un year_month_day et un certain nombre d'années ou de mois
(fonction)
ajoute ou soustrait un year_month_day_last et un certain nombre d'années ou de mois
(fonction)
ajoute ou soustrait un year_month_weekday et un certain nombre d'années ou de mois
(fonction)
ajoute ou soustrait un year_month_weekday_last et un certain nombre d'années ou de mois
(fonction)
(C++20)
syntaxe conventionnelle pour la création de dates du calendrier grégorien
(fonction)
Moment de la journée
Défini dans l'espace de noms std::chrono
convertit entre un format horaire 12h/24h
(fonction)
Fuseau horaire
Défini dans l'espace de noms std::chrono
accède et contrôle les informations globales de la base de données des fuseaux horaires
(fonction)
localise un time_zone basé sur son nom
(fonction)
compare deux time_zone objets
(fonction)
(C++20)
compare deux valeurs zoned_time
(modèle de fonction)
compare deux objets time_zone_link
(fonction)
Seconde intercalaire
Défini dans l'espace de noms std::chrono
obtient les informations d'insertion de seconde intercalaire à partir d'un utc_time object
(fonction template)
compare deux valeurs leap_second ou une valeur leap_second et un sys_time
(fonction template)
Entrées/Sorties
Défini dans l'espace de noms std::chrono
(C++20)
effectue la sortie en flux sur une duration
(fonction template)
effectue une sortie de flux sur un sys_time
(fonction template)
effectue une sortie de flux sur un utc_time
(modèle de fonction)
effectue une sortie de flux sur un tai_time
(fonction template)
effectue la sortie en flux sur un gps_time
(modèle de fonction)
effectue la sortie en flux sur un file_time
(modèle de fonction)
(C++20)
affiche un day dans un flux
(modèle de fonction)
(C++20)
sort un month dans un flux
(modèle de fonction)
(C++20)
sortie d'une year dans un flux
(modèle de fonction)
(C++20)
affiche un weekday dans un flux
(modèle de fonction)
(C++20)
sortie d'un weekday_indexed dans un flux
(modèle de fonction)
(C++20)
affiche un weekday_last dans un flux
(modèle de fonction)
(C++20)
affiche un month_day dans un flux
(modèle de fonction)
(C++20)
affiche un month_day_last dans un flux
(modèle de fonction)
(C++20)
affiche un month_weekday dans un flux
(modèle de fonction)
(C++20)
affiche un month_weekday_last dans un flux
(fonction template)
(C++20)
sortie d'un year_month dans un flux
(modèle de fonction)
(C++20)
affiche un year_month_day dans un flux
(modèle de fonction)
(C++20)
sortie d'un year_month_day_last dans un flux
(modèle de fonction)
(C++20)
sortie d'un year_month_weekday dans un flux
(modèle de fonction)
(C++20)
sortie d'un year_month_weekday_last dans un flux
(modèle de fonction)
(C++20)
sortie d'un hh_mm_ss dans un flux
(modèle de fonction)
(C++20)
affiche un sys_info dans un flux
(modèle de fonction)
(C++20)
affiche un local_info dans un flux
(modèle de fonction)
(C++20)
affiche un zoned_time dans un flux
(modèle de fonction)
analyse un day depuis un flux selon le format fourni
(modèle de fonction)
analyse un month depuis un flux selon le format fourni
(modèle de fonction)
analyse une year depuis un flux selon le format fourni
(modèle de fonction)
analyse un weekday depuis un flux selon le format fourni
(modèle de fonction)
analyse un month_day à partir d'un flux selon le format fourni
(modèle de fonction)
analyse un year_month à partir d'un flux selon le format fourni
(modèle de fonction)
analyse un year_month_day à partir d'un flux selon le format fourni
(modèle de fonction)
(C++20)
analyse un objet chrono depuis un flux
(modèle de fonction)
Littéraux
Défini dans l'espace de noms en ligne std::literals::chrono_literals
un littéral std::chrono::duration représentant des heures
(fonction)
un std::chrono::duration littéral représentant des minutes
(fonction)
un littéral std::chrono::duration représentant des secondes
(fonction)
un littéral std::chrono::duration représentant des millisecondes
(fonction)
un littéral std::chrono::duration représentant des microsecondes
(fonction)
un littéral std::chrono::duration représentant des nanosecondes
(fonction)
un littéral std::chrono::day représentant un jour du mois
(fonction)
un littéral std::chrono::year représentant une année particulière
(fonction)

Synopsis

#include <compare>
namespace std {
  namespace chrono {
    // modèle de classe duration
    template<class Rep, class Period = ratio<1>> class duration;
    // modèle de classe time_point
    template<class Clock, class Duration = typename Clock::durée> class time_point;
  }
  // spécialisations de common_type
  template<class Rep1, class Period1, class Rep2, class Period2>
    struct common_type<chrono::durée<Rep1, Period1>,
                       chrono::durée<Rep2, Period2>>;
  template<class Clock, class Duration1, class Duration2>
    struct common_type<chrono::time_point<Clock, Duration1>,
                       chrono::time_point<Clock, Duration2>>;
  namespace chrono {
    // traits de personnalisation
    template<class Rep> struct treat_as_floating_point;
    template<class Rep>
      inline constexpr bool treat_as_floating_point_v = treat_as_floating_point<Rep>::value;
    template<class Rep> struct duration_values;
    template<class T> struct is_clock;
    template<class T> inline constexpr bool is_clock_v = is_clock<T>::value;
    // arithmétique des durées
    template<class Rep1, class Period1, class Rep2, class Period2>
      constexpr common_type_t<duration<Rep1, Period1>, duration<Rep2, Period2>>
        operator+(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
    template<class Rep1, class Period1, class Rep2, class Period2>
      constexpr common_type_t<duration<Rep1, Period1>, duration<Rep2, Period2>>
        operator-(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
    template<class Rep1, class Period, class Rep2>
      constexpr duration<common_type_t<Rep1, Rep2>, Period>
        operator*(const duration<Rep1, Period>& d, const Rep2& s);
    template<class Rep1, class Rep2, class Period>
      constexpr duration<common_type_t<Rep1, Rep2>, Period>
        operator*(const Rep1& s, const duration<Rep2, Period>& d);
    template<class Rep1, class Period, class Rep2>
      constexpr duration<common_type_t<Rep1, Rep2>, Period>
        operator/(const duration<Rep1, Period>& d, const Rep2& s);
    template<class Rep1, class Period1, class Rep2, class Period2>
      constexpr common_type_t<Rep1, Rep2>
        operator/(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
    template<class Rep1, class Period, class Rep2>
      constexpr duration<common_type_t<Rep1, Rep2>, Period>
        operator%(const duration<Rep1, Period>& d, const Rep2& s);
    template<class Rep1, class Period1, class Rep2, class Period2>
      constexpr common_type_t<duration<Rep1, Period1>, duration<Rep2, Period2>>
        operator%(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
    // comparaisons de durée
    template<class Rep1, class Period1, class Rep2, class Period2>
      constexpr bool operator==(const duration<Rep1, Period1>& lhs,
                                const duration<Rep2, Period2>& rhs);
    template<class Rep1, class Period1, class Rep2, class Period2>
      constexpr bool operator< (const duration<Rep1, Period1>& lhs,
                                const duration<Rep2, Period2>& rhs);
    template<class Rep1, class Period1, class Rep2, class Period2>
      constexpr bool operator> (const duration<Rep1, Period1>& lhs,
                                const duration<Rep2, Period2>& rhs);
    template<class Rep1, class Period1, class Rep2, class Period2>
      constexpr bool operator<=(const duration<Rep1, Period1>& lhs,
                                const duration<Rep2, Period2>& rhs);
    template<class Rep1, class Period1, class Rep2, class Period2>
      constexpr bool operator>=(const duration<Rep1, Period1>& lhs,
                                const duration<Rep2, Period2>& rhs);
    template<class Rep1, class Period1, class Rep2, class Period2>
      requires /* voir description */
      constexpr auto operator<=>(const duration<Rep1, Period1>& lhs,
                                 const duration<Rep2, Period2>& rhs);
    // conversions
    template<class ToDuration, class Rep, class Period>
      constexpr ToDuration duration_cast(const duration<Rep, Period>& d);
    template<class ToDuration, class Rep, class Period>
      constexpr ToDuration floor(const duration<Rep, Period>& d);
    template<class ToDuration, class Rep, class Period>
      constexpr ToDuration ceil(const duration<Rep, Period>& d);
    template<class ToDuration, class Rep, class Period>
      constexpr ToDuration round(const duration<Rep, Period>& d);
    // Entrée/Sortie de durée
    template<class CharT, class Traits, class Rep, class Period>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os,
                   const duration<Rep, Period>& d);
    template<class CharT, class Traits, class Rep, class Period, class Alloc = allocator<CharT>>
      basic_istream<CharT, Traits>&
        from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt,
                    duration<Rep, Period>& d,
                    basic_string<CharT, Traits, Alloc>* abbrev = nullptr,
                    minutes* offset = nullptr);
    // typedefs de commodité
    using nanoseconds  = duration</* type entier signé d'au moins 64 bits */, nano>;
    using microseconds = duration</* type entier signé d'au moins 55 bits */, micro>;
    using milliseconds = duration</* type entier signé d'au moins 45 bits */, milli>;
    using seconds      = duration</* type entier signé d'au moins 35 bits */>;
    using minutes      = duration</* type entier signé d'au moins 29 bits */,
                                  ratio<  60>>;
    using hours        = duration</* type entier signé d'au moins 23 bits */,
                                  ratio<3600>>;
    using days         = duration</* type entier signé d'au moins 25 bits */,
                                  ratio_multiply<ratio<24>, hours::période>>;
    using weeks        = duration</* type entier signé d'au moins 22 bits */,
                                  ratio_multiply<ratio<7>, days::période>>;
    using years        = duration</* type entier signé d'au moins 17 bits */,
                                  ratio_multiply<ratio<146097, 400>, days::période>>;
    using months       = duration</* type entier signé d'au moins 20 bits */,
                                  ratio_divide<years::période, ratio<12>>>;
    // arithmétique des time_point
    template<class Clock, class Duration1, class Rep2, class Period2>
      constexpr time_point<Clock, common_type_t<Duration1, duration<Rep2, Period2>>>
        operator+(const time_point<Clock, Duration1>& lhs, const duration<Rep2, Period2>& rhs);
    template<class Rep1, class Period1, class Clock, class Duration2>
      constexpr time_point<Clock, common_type_t<duration<Rep1, Period1>, Duration2>>
        operator+(const duration<Rep1, Period1>& lhs, const time_point<Clock, Duration2>& rhs);
    template<class Clock, class Duration1, class Rep2, class Period2>
      constexpr time_point<Clock, common_type_t<Duration1, duration<Rep2, Period2>>>
        operator-(const time_point<Clock, Duration1>& lhs, const duration<Rep2, Period2>& rhs);
    template<class Clock, class Duration1, class Duration2>
      constexpr common_type_t<Duration1, Duration2>
        operator-(const time_point<Clock, Duration1>& lhs,
                  const time_point<Clock, Duration2>& rhs);
    // comparaisons de time_point
    template<class Clock, class Duration1, class Duration2>
       constexpr bool operator==(const time_point<Clock, Duration1>& lhs,
                                 const time_point<Clock, Duration2>& rhs);
    template<class Clock, class Duration1, class Duration2>
       constexpr bool operator< (const time_point<Clock, Duration1>& lhs,
                                 const time_point<Clock, Duration2>& rhs);
    template<class Clock, class Duration1, class Duration2>
       constexpr bool operator> (const time_point<Clock, Duration1>& lhs,
                                 const time_point<Clock, Duration2>& rhs);
    template<class Clock, class Duration1, class Duration2>
       constexpr bool operator<=(const time_point<Clock, Duration1>& lhs,
                                 const time_point<Clock, Duration2>& rhs);
    template<class Clock, class Duration1, class Duration2>
       constexpr bool operator>=(const time_point<Clock, Duration1>& lhs,
                                 const time_point<Clock, Duration2>& rhs);
    template<class Clock, class Duration1, three_way_comparable_with<Duration1> Duration2>
       constexpr auto operator<=>(const time_point<Clock, Duration1>& lhs,
                                  const time_point<Clock, Duration2>& rhs);
    // conversions
    template<class ToDuration, class Clock, class Duration>
      constexpr time_point<Clock, ToDuration>
        time_point_cast(const time_point<Clock, Duration>& t);
    template<class ToDuration, class Clock, class Duration>
      constexpr time_point<Clock, ToDuration> floor(const time_point<Clock, Duration>& tp);
    template<class ToDuration, class Clock, class Duration>
      constexpr time_point<Clock, ToDuration> ceil(const time_point<Clock, Duration>& tp);
    template<class ToDuration, class Clock, class Duration>
      constexpr time_point<Clock, ToDuration> round(const time_point<Clock, Duration>& tp);
    // algorithmes spécialisés
    template<class Rep, class Period>
      constexpr duration<Rep, Period> abs(duration<Rep, Period> d);
    // class system_clock
    class system_clock;
    template<class Duration>
      using sys_time  = time_point<system_clock, Duration>;
    using sys_seconds = sys_time<seconds>;
    using sys_days    = sys_time<days>;
    template<class CharT, class Traits, class Duration>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const sys_time<Duration>& tp);
    template<class CharT, class Traits>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const sys_days& dp);
    template<class CharT, class Traits, class Duration, class Alloc = allocator<CharT>>
      basic_istream<CharT, Traits>&
        from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt,
                    sys_time<Duration>& tp,
                    basic_string<CharT, Traits, Alloc>* abbrev = nullptr,
                    minutes* offset = nullptr);
    // classe utc_clock
    class utc_clock;
    template<class Duration>
      using utc_time  = time_point<utc_clock, Duration>;
    using utc_seconds = utc_time<seconds>;
    template<class CharT, class Traits, class Duration>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const utc_time<Duration>& t);
    template<class CharT, class Traits, class Duration, class Alloc = allocator<CharT>>
      basic_istream<CharT, Traits>&
        from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt,
                    utc_time<Duration>& tp,
                    basic_string<CharT, Traits, Alloc>* abbrev = nullptr,
                    minutes* offset = nullptr);
    struct leap_second_info;
    template<class Duration>
      leap_second_info get_leap_second_info(const utc_time<Duration>& ut);
    // classe tai_clock
    class tai_clock;
    template<class Duration>
      using tai_time  = time_point<tai_clock, Duration>;
    using tai_seconds = tai_time<seconds>;
    template<class CharT, class Traits, class Duration>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const tai_time<Duration>& t);
    template<class CharT, class Traits, class Duration, class Alloc = allocator<CharT>>
      basic_istream<CharT, Traits>&
        from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt,
                    tai_time<Duration>& tp,
                    basic_string<CharT, Traits, Alloc>* abbrev = nullptr,
                    minutes* offset = nullptr);
    // classe gps_clock
    class gps_clock;
    template<class Duration>
      using gps_time  = time_point<gps_clock, Duration>;
    using gps_seconds = gps_time<seconds>;
    template<class CharT, class Traits, class Duration>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const gps_time<Duration>& t);
    template<class CharT, class Traits, class Duration, class Alloc = allocator<CharT>>
      basic_istream<CharT, Traits>&
        from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt,
                    gps_time<Duration>& tp,
                    basic_string<CharT, Traits, Alloc>* abbrev = nullptr,
                    minutes* offset = nullptr);
    // type file_clock
    using file_clock = /* voir description */;
    template<class Duration>
      using file_time = time_point<file_clock, Duration>;
    template<class CharT, class Traits, class Duration>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const file_time<Duration>& tp);
    template<class CharT, class Traits, class Duration, class Alloc = allocator<CharT>>
      basic_istream<CharT, Traits>&
        from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt,
                    file_time<Duration>& tp,
                    basic_string<CharT, Traits, Alloc>* abbrev = nullptr,
                    minutes* offset = nullptr);
    // class steady_clock
    class steady_clock;
    // class high_resolution_clock
    class high_resolution_clock;
    // heure locale
    struct local_t {};
    template<class Duration>
      using local_time  = time_point<local_t, Duration>;
    using local_seconds = local_time<seconds>;
    using local_days    = local_time<days>;
    template<class CharT, class Traits, class Duration>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const local_time<Duration>& tp);
    template<class CharT, class Traits, class Duration, class Alloc = allocator<CharT>>
      basic_istream<CharT, Traits>&
        from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt,
                    local_time<Duration>& tp,
                    basic_string<CharT, Traits, Alloc>* abbrev = nullptr,
                    minutes* offset = nullptr);
    // conversions de time_point
    template<class DestClock, class SourceClock>
      struct clock_time_conversion;
    template<class DestClock, class SourceClock, class Duration>
      auto clock_cast(const time_point<SourceClock, Duration>& t);
    // classe last_spec
    struct last_spec;
    // classe day
    class day;
    constexpr bool operator==(const day& x, const day& y) noexcept;
    constexpr strong_ordering operator<=>(const day& x, const day& y) noexcept;
    constexpr day  operator+(const day&  x, const days& y) noexcept;
    constexpr day  operator+(const days& x, const day&  y) noexcept;
    constexpr day  operator-(const day&  x, const days& y) noexcept;
    constexpr days operator-(const day&  x, const day&  y) noexcept;
    template<class CharT, class Traits>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const day& d);
    template<class CharT, class Traits, class Alloc = allocator<CharT>>
      basic_istream<CharT, Traits>&
        from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt,
                    day& d, basic_string<CharT, Traits, Alloc>* abbrev = nullptr,
                    minutes* offset = nullptr);
    // classe month
    class month;
    constexpr bool operator==(const month& x, const month& y) noexcept;
    constexpr strong_ordering operator<=>(const month& x, const month& y) noexcept;
    constexpr month  operator+(const month&  x, const months& y) noexcept;
    constexpr month  operator+(const months& x,  const month& y) noexcept;
    constexpr month  operator-(const month&  x, const months& y) noexcept;
    constexpr months operator-(const month&  x,  const month& y) noexcept;
    template<class CharT, class Traits>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const month& m);
    template<class CharT, class Traits, class Alloc = allocator<CharT>>
      basic_istream<CharT, Traits>&
        from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt,
                    month& m, basic_string<CharT, Traits, Alloc>* abbrev = nullptr,
                    minutes* offset = nullptr);
    // année de classe
    class year;
    constexpr bool operator==(const year& x, const year& y) noexcept;
    constexpr strong_ordering operator<=>(const year& x, const year& y) noexcept;
    constexpr year  operator+(const year&  x, const years& y) noexcept;
    constexpr year  operator+(const years& x, const year&  y) noexcept;
    constexpr year  operator-(const year&  x, const years& y) noexcept;
    constexpr years operator-(const year&  x, const year&  y) noexcept;
    template<class CharT, class Traits>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const year& y);
    template<class CharT, class Traits, class Alloc = allocator<CharT>>
      basic_istream<CharT, Traits>&
        from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt,
                    year& y, basic_string<CharT, Traits, Alloc>* abbrev = nullptr,
                    minutes* offset = nullptr);
    // classe weekday
    class weekday;
    constexpr bool operator==(const weekday& x, const weekday& y) noexcept;
    constexpr weekday operator+(const weekday& x, const days&    y) noexcept;
    constexpr weekday operator+(const days&    x, const weekday& y) noexcept;
    constexpr weekday operator-(const weekday& x, const days&    y) noexcept;
    constexpr days    operator-(const weekday& x, const weekday& y) noexcept;
    template<class CharT, class Traits>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const weekday& wd);
    template<class CharT, class Traits, class Alloc = allocator<CharT>>
      basic_istream<CharT, Traits>&
        from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt,
                    weekday& wd, basic_string<CharT, Traits, Alloc>* abbrev = nullptr,
                    minutes* offset = nullptr);
    // class weekday_indexed
    class weekday_indexed;
    constexpr bool operator==(const weekday_indexed& x, const weekday_indexed& y) noexcept;
    template<class CharT, class Traits>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const weekday_indexed& wdi);
    // class weekday_last
    class weekday_last;
    constexpr bool operator==(const weekday_last& x, const weekday_last& y) noexcept;
    template<class CharT, class Traits>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const weekday_last& wdl);
    // classe month_day
    class month_day;
    constexpr bool operator==(const month_day& x, const month_day& y) noexcept;
    constexpr strong_ordering operator<=>(const month_day& x, const month_day& y) noexcept;
    template<class CharT, class Traits>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const month_day& md);
    template<class CharT, class Traits, class Alloc = allocator<CharT>>
      basic_istream<CharT, Traits>&
        from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt,
                    month_day& md, basic_string<CharT, Traits, Alloc>* abbrev = nullptr,
                    minutes* offset = nullptr);
    // classe month_day_last
    class month_day_last;
    constexpr bool operator==(const month_day_last& x, const month_day_last& y) noexcept;
    constexpr strong_ordering operator<=>(const month_day_last& x,
                                          const month_day_last& y) noexcept;
    template<class CharT, class Traits>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const month_day_last& mdl);
    // classe month_weekday
    class month_weekday;
    constexpr bool operator==(const month_weekday& x, const month_weekday& y) noexcept;
    template<class CharT, class Traits>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const month_weekday& mwd);
    // class month_weekday_last
    class month_weekday_last;
    constexpr bool operator==(const month_weekday_last& x, const month_weekday_last& y) noexcept;
    template<class CharT, class Traits>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const month_weekday_last& mwdl);
    // classe year_month
    class year_month;
    constexpr bool operator==(const year_month& x, const year_month& y) noexcept;
    constexpr strong_ordering operator<=>(const year_month& x, const year_month& y) noexcept;
    constexpr year_month operator+(const year_month& ym, const months& dm) noexcept;
    constexpr year_month operator+(const months& dm, const year_month& ym) noexcept;
    constexpr year_month operator-(const year_month& ym, const months& dm) noexcept;
    constexpr months operator-(const year_month& x, const year_month& y) noexcept;
    constexpr year_month operator+(const year_month& ym, const years& dy) noexcept;
    constexpr year_month operator+(const years& dy, const year_month& ym) noexcept;
    constexpr year_month operator-(const year_month& ym, const years& dy) noexcept;
    template<class CharT, class Traits>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const year_month& ym);
    template<class CharT, class Traits, class Alloc = allocator<CharT>>
      basic_istream<CharT, Traits>&
        from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt,
                    year_month& ym, basic_string<CharT, Traits, Alloc>* abbrev = nullptr,
                    minutes* offset = nullptr);
    // classe year_month_day
    class year_month_day;
    constexpr bool operator==(const year_month_day& x, const year_month_day& y) noexcept;
    constexpr strong_ordering operator<=>(const year_month_day& x,
                                          const year_month_day& y) noexcept;
    constexpr year_month_day operator+(const year_month_day& ymd, const months& dm) noexcept;
    constexpr year_month_day operator+(const months& dm, const year_month_day& ymd) noexcept;
    constexpr year_month_day operator+(const year_month_day& ymd, const years& dy) noexcept;
    constexpr year_month_day operator+(const years& dy, const year_month_day& ymd) noexcept;
    constexpr year_month_day operator-(const year_month_day& ymd, const months& dm) noexcept;
    constexpr year_month_day operator-(const year_month_day& ymd, const years& dy) noexcept;
    template<class CharT, class Traits>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const year_month_day& ymd);
    template<class CharT, class Traits, class Alloc = allocator<CharT>>
      basic_istream<CharT, Traits>&
        from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt,
                    year_month_day& ymd,
                    basic_string<CharT, Traits, Alloc>* abbrev = nullptr,
                    minutes* offset = nullptr);
    // classe year_month_day_last
    class year_month_day_last;
    constexpr bool operator==(const year_month_day_last& x,
                              const year_month_day_last& y) noexcept;
    constexpr strong_ordering operator<=>(const year_month_day_last& x,
                                          const year_month_day_last& y) noexcept;
    constexpr year_month_day_last
      operator+(const year_month_day_last& ymdl, const months& dm) noexcept;
    constexpr year_month_day_last
      operator+(const months& dm, const year_month_day_last& ymdl) noexcept;
    constexpr year_month_day_last
      operator+(const year_month_day_last& ymdl, const years& dy) noexcept;
    constexpr year_month_day_last
      operator+(const years& dy, const year_month_day_last& ymdl) noexcept;
    constexpr year_month_day_last
      operator-(const year_month_day_last& ymdl, const months& dm) noexcept;
    constexpr year_month_day_last
      operator-(const year_month_day_last& ymdl, const years& dy) noexcept;
    template<class CharT, class Traits>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const year_month_day_last& ymdl);
    // classe year_month_weekday
    class year_month_weekday;
    constexpr bool operator==(const year_month_weekday& x,
                              const year_month_weekday& y) noexcept;
    constexpr year_month_weekday
      operator+(const year_month_weekday& ymwd, const months& dm) noexcept;
    constexpr year_month_weekday
      operator+(const months& dm, const year_month_weekday& ymwd) noexcept;
    constexpr year_month_weekday
      operator+(const year_month_weekday& ymwd, const years& dy) noexcept;
    constexpr year_month_weekday
      operator+(const years& dy, const year_month_weekday& ymwd) noexcept;
    constexpr year_month_weekday
      operator-(const year_month_weekday& ymwd, const months& dm) noexcept;
    constexpr year_month_weekday
      operator-(const year_month_weekday& ymwd, const years& dy) noexcept;
    template<class CharT, class Traits>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const year_month_weekday& ymwdi);
    // classe year_month_weekday_last
    class year_month_weekday_last;
    constexpr bool operator==(const year_month_weekday_last& x,
                              const year_month_weekday_last& y) noexcept;
    constexpr year_month_weekday_last
      operator+(const year_month_weekday_last& ymwdl, const months& dm) noexcept;
    constexpr year_month_weekday_last
      operator+(const months& dm, const year_month_weekday_last& ymwdl) noexcept;
    constexpr year_month_weekday_last
      operator+(const year_month_weekday_last& ymwdl, const years& dy) noexcept;
    constexpr year_month_weekday_last
      operator+(const years& dy, const year_month_weekday_last& ymwdl) noexcept;
    constexpr year_month_weekday_last
      operator-(const year_month_weekday_last& ymwdl, const months& dm) noexcept;
    constexpr year_month_weekday_last
      operator-(const year_month_weekday_last& ymwdl, const years& dy) noexcept;
    template<class CharT, class Traits>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const year_month_weekday_last& ymwdl);
    // opérateurs de syntaxe conventionnelle du calendrier civil
    constexpr year_month
      operator/(const year& y, const month& m) noexcept;
    constexpr year_month
      operator/(const year& y, int m) noexcept;
    constexpr month_day
      operator/(const month& m, const day& d) noexcept;
    constexpr month_day
      operator/(const month& m, int d) noexcept;
    constexpr month_day
      operator/(int m, const day& d) noexcept;
    constexpr month_day
      operator/(const day& d, const month& m) noexcept;
    constexpr month_day
      operator/(const day& d, int m) noexcept;
    constexpr month_day_last
      operator/(const month& m, last_spec) noexcept;
    constexpr month_day_last
      operator/(int m, last_spec) noexcept;
    constexpr month_day_last
      operator/(last_spec, const month& m) noexcept;
    constexpr month_day_last
      operator/(last_spec, int m) noexcept;
    constexpr month_weekday
      operator/(const month& m, const weekday_indexed& wdi) noexcept;
    constexpr month_weekday
      operator/(int m, const weekday_indexed& wdi) noexcept;
    constexpr month_weekday
      operator/(const weekday_indexed& wdi, const month& m) noexcept;
    constexpr month_weekday
      operator/(const weekday_indexed& wdi, int m) noexcept;
    constexpr month_weekday_last
      operator/(const month& m, const weekday_last& wdl) noexcept;
    constexpr month_weekday_last
      operator/(int m, const weekday_last& wdl) noexcept;
    constexpr month_weekday_last
      operator/(const weekday_last& wdl, const month& m) noexcept;
    constexpr month_weekday_last
      operator/(const weekday_last& wdl, int m) noexcept;
    constexpr year_month_day
      operator/(const year_month& ym, const day& d) noexcept;
    constexpr year_month_day
      operator/(const year_month& ym, int d) noexcept;
    constexpr year_month_day
      operator/(const year& y, const month_day& md) noexcept;
    constexpr year_month_day
      operator/(int y, const month_day& md) noexcept;
    constexpr year_month_day
      operator/(const month_day& md, const year& y) noexcept;
    constexpr year_month_day
      operator/(const month_day& md, int y) noexcept;
    constexpr year_month_day_last
      operator/(const year_month& ym, last_spec) noexcept;
    constexpr year_month_day_last
      operator/(const year& y, const month_day_last& mdl) noexcept;
    constexpr year_month_day_last
      operator/(int y, const month_day_last& mdl) noexcept;
    constexpr year_month_day_last
      operator/(const month_day_last& mdl, const year& y) noexcept;
    constexpr year_month_day_last
      operator/(const month_day_last& mdl, int y) noexcept;
    constexpr year_month_weekday
      operator/(const year_month& ym, const weekday_indexed& wdi) noexcept;
    constexpr year_month_weekday
      operator/(const year& y, const month_weekday& mwd) noexcept;
    constexpr year_month_weekday
      operator/(int y, const month_weekday& mwd) noexcept;
    constexpr year_month_weekday
      operator/(const month_weekday& mwd, const year& y) noexcept;
    constexpr year_month_weekday
      operator/(const month_weekday& mwd, int y) noexcept;
    constexpr year_month_weekday_last
      operator/(const year_month& ym, const weekday_last& wdl) noexcept;
    constexpr year_month_weekday_last
      operator/(const year& y, const month_weekday_last& mwdl) noexcept;
    constexpr year_month_weekday_last
      operator/(int y, const month_weekday_last& mwdl) noexcept;
    constexpr year_month_weekday_last
      operator/(const month_weekday_last& mwdl, const year& y) noexcept;
    constexpr year_month_weekday_last
      operator/(const month_weekday_last& mwdl, int y) noexcept;
    // modèle de classe hh_mm_ss
    template<class Duration> class hh_mm_ss;
    template<class CharT, class Traits, class Duration>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const hh_mm_ss<Duration>& hms);
    // Fonctions pour les formats 12/24 heures
    constexpr bool is_am(const hours& h) noexcept;
    constexpr bool is_pm(const hours& h) noexcept;
    constexpr hours make12(const hours& h) noexcept;
    constexpr hours make24(const hours& h, bool is_pm) noexcept;
    // base de données des fuseaux horaires
    struct tzdb;
    class tzdb_list;
    // accès à la base de données des fuseaux horaires
    const tzdb& get_tzdb();
    tzdb_list& get_tzdb_list();
    const time_zone* locate_zone(string_view tz_name);
    const time_zone* current_zone();
    // support de base de données de fuseaux horaires distante
    const tzdb& reload_tzdb();
    string remote_version();
    // classes d'exception
    class nonexistent_local_time;
    class ambiguous_local_time;
    // classes d'information
    struct sys_info;
    template<class CharT, class Traits>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const sys_info& si);
    struct local_info;
    template<class CharT, class Traits>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const local_info& li);
    // classe time_zone
    enum class choose {earliest, latest};
    class time_zone;
    bool operator==(const time_zone& x, const time_zone& y) noexcept;
    strong_ordering operator<=>(const time_zone& x, const time_zone& y) noexcept;
    // modèle de classe zoned_traits
    template<class T> struct zoned_traits;
    // modèle de classe zoned_time
    template<class Duration, class TimeZonePtr = const time_zone*> class zoned_time;
    using zoned_seconds = zoned_time<seconds>;
    template<class Duration1, class Duration2, class TimeZonePtr>
      bool operator==(const zoned_time<Duration1, TimeZonePtr>& x,
                      const zoned_time<Duration2, TimeZonePtr>& y);
    template<class CharT, class Traits, class Duration, class TimeZonePtr>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os,
                   const zoned_time<Duration, TimeZonePtr>& t);
    // prise en charge des secondes intercalaires
    class leap_second;
    bool operator==(const leap_second& x, const leap_second& y);
    strong_ordering operator<=>(const leap_second& x, const leap_second& y);
    template<class Duration>
      constexpr bool operator==(const leap_second& x, const sys_time<Duration>& y);
    template<class Duration>
      constexpr bool operator< (const leap_second& x, const sys_time<Duration>& y);
    template<class Duration>
      constexpr bool operator< (const sys_time<Duration>& x, const leap_second& y);
    template<class Duration>
      constexpr bool operator> (const leap_second& x, const sys_time<Duration>& y);
    template<class Duration>
      constexpr bool operator> (const sys_time<Duration>& x, const leap_second& y);
    template<class Duration>
      constexpr bool operator<=(const leap_second& x, const sys_time<Duration>& y);
    template<class Duration>
      constexpr bool operator<=(const sys_time<Duration>& x, const leap_second& y);
    template<class Duration>
      constexpr bool operator>=(const leap_second& x, const sys_time<Duration>& y);
    template<class Duration>
      constexpr bool operator>=(const sys_time<Duration>& x, const leap_second& y);
    template<class Duration>
      requires three_way_comparable_with<sys_seconds, sys_time<Duration>>
      constexpr auto operator<=>(const leap_second& x, const sys_time<Duration>& y);
    // classe time_zone_link
    class time_zone_link;
    bool operator==(const time_zone_link& x, const time_zone_link& y);
    strong_ordering operator<=>(const time_zone_link& x, const time_zone_link& y);
    // formatage
    template<class Duration> struct /*local-time-format-t*/;    // exposition uniquement
    template<class Duration>
      /*local-time-format-t*/<Duration>
        local_time_format(local_time<Duration> time, const string* abbrev = nullptr,
                          const seconds* offset_sec = nullptr);
  }
  template<class Rep, class Period, class CharT>
    struct formatter<chrono::durée<Rep, Period>, CharT>;
  template<class Duration, class CharT>
    struct formatter<chrono::sys_time<Duration>, CharT>;
  template<class Duration, class CharT>
    struct formatter<chrono::utc_time<Duration>, CharT>;
  template<class Duration, class CharT>
    struct formatter<chrono::tai_time<Duration>, CharT>;
  template<class Duration, class CharT>
    struct formatter<chrono::gps_time<Duration>, CharT>;
  template<class Duration, class CharT>
    struct formatter<chrono::file_time<Duration>, CharT>;
  template<class Duration, class CharT>
    struct formatter<chrono::local_time<Duration>, CharT>;
  template<class Duration, class CharT>
    struct formatter<chrono::/*local-time-format-t*/<Duration>, CharT>;
  template<class CharT> struct formatter<chrono::jour, CharT>;
  template<class CharT> struct formatter<chrono::mois, CharT>;
  template<class CharT> struct formatter<chrono::année, CharT>;
  template<class CharT> struct formatter<chrono::jour de la semaine, CharT>;
  template<class CharT> struct formatter<chrono::weekday_indexed, CharT>;
  template<class CharT> struct formatter<chrono::weekday_last, CharT>;
  template<class CharT> struct formatter<chrono::month_day, CharT>;
  template<class CharT> struct formatter<chrono::month_day_last, CharT>;
  template<class CharT> struct formatter<chrono::month_weekday, CharT>;
  template<class CharT> struct formatter<chrono::month_weekday_last, CharT>;
  template<class CharT> struct formatter<chrono::year_month, CharT>;
  template<class CharT> struct formatter<chrono::year_month_day, CharT>;
  template<class CharT> struct formatter<chrono::year_month_day_last, CharT>;
  template<class CharT> struct formatter<chrono::year_month_weekday, CharT>;
  template<class CharT> struct formatter<chrono::year_month_weekday_last, CharT>;
  template<class Rep, class Period, class CharT>
    struct formatter<chrono::hh_mm_ss<duration<Rep, Period>>, CharT>;
  template<class CharT> struct formatter<chrono::sys_info, CharT>;
  template<class CharT> struct formatter<chrono::local_info, CharT>;
  template<class Duration, class TimeZonePtr, class CharT>
    struct formatter<chrono::zoned_time<Duration, TimeZonePtr>, CharT>;
  namespace chrono {
    // analyse syntaxique
    template<class CharT, class Parsable>
      /* non spécifié */
        parse(const CharT* fmt, Parsable& tp);
    template<class CharT, class Traits, class Alloc, class Parsable>
      /* non spécifié */
        parse(const basic_string<CharT, Traits, Alloc>& format, Parsable& tp);
    template<class CharT, class traits, class Alloc, class Parsable>
      /* non spécifié */
        parse(const CharT* fmt, Parsable& tp,
              basic_string<CharT, traits, Alloc>& abbrev);
    template<class CharT, class Traits, class Alloc, class Parsable>
      /* non spécifié */
        parse(const basic_string<CharT, Traits, Alloc>& format, Parsable& tp,
              basic_string<CharT, Traits, Alloc>& abbrev);
    template<class CharT, class Parsable>
      /* non spécifié */
        parse(const CharT* fmt, Parsable& tp, minutes& offset);
    template<class CharT, class Traits, class Alloc, class Parsable>
      /* non spécifié */
        parse(const basic_string<CharT, Traits, Alloc>& format, Parsable& tp,
              minutes& offset);
    template<class CharT, class traits, class Alloc, class Parsable>
      /* non spécifié */
        parse(const CharT* fmt, Parsable& tp,
              basic_string<CharT, traits, Alloc>& abbrev, minutes& offset);
    template<class CharT, class Traits, class Alloc, class Parsable>
      /* non spécifié */
        parse(const basic_string<CharT, Traits, Alloc>& format, Parsable& tp,
              basic_string<CharT, Traits, Alloc>& abbrev, minutes& offset);
    // constantes calendaires
    inline constexpr last_spec last{};
    inline constexpr weekday Sunday{0};
    inline constexpr weekday Monday{1};
    inline constexpr weekday Tuesday{2};
    inline constexpr weekday Wednesday{3};
    inline constexpr weekday Thursday{4};
    inline constexpr weekday Friday{5};
    inline constexpr weekday Saturday{6};
    inline constexpr month January{1};
    inline constexpr month February{2};
    inline constexpr month March{3};
    inline constexpr month April{4};
    inline constexpr month May{5};
    inline constexpr month June{6};
    inline constexpr month July{7};
    inline constexpr month August{8};
    inline constexpr month September{9};
    inline constexpr month October{10};
    inline constexpr month November{11};
    inline constexpr month December{12};
  }
  inline namespace literals {
  inline namespace chrono_literals {
    // suffixes pour les littéraux de durée
    constexpr chrono::heures                    operator""h(unsigned long long);
    constexpr chrono::durée</* non spécifié */,
                               ratio<3600, 1>> operator""h(long double);
    constexpr chrono::minutes                operator""min(unsigned long long);
    constexpr chrono::durée</* non spécifié */,
                               ratio<60, 1>> operator""min(long double);
    constexpr chrono::secondes                     operator""s(unsigned long long);
    constexpr chrono::durée</* non spécifié */> operator""s(long double);
    constexpr chrono::millisecondes                       operator""ms(unsigned long long);
    constexpr chrono::durée</* non spécifié */, milli> operator""ms(long double);
    constexpr chrono::microsecondes                       operator""us(unsigned long long);
    constexpr chrono::durée</* non spécifié */, micro> operator""us(long double);
    constexpr chrono::nanosecondes                       operator""ns(unsigned long long);
    constexpr chrono::durée</* non spécifié */, nano> operator""ns(long double);
    // fonctions non membres
    constexpr chrono::jour  operator""d(unsigned long long d) noexcept;
    // fonctions non membres
    constexpr chrono::année operator""y(unsigned long long y) noexcept;
  }
  }
  namespace chrono {
    using namespace literals::chrono_literals;
  }
  // prise en charge du hachage
  template<class T> struct hash;
  template<class Rep, class Period>
    struct hash<chrono::durée<Rep, Period>>;
  template<class Clock, class Duration>
    struct hash<chrono::time_point<Clock, Duration>>;
  template<> struct hash<chrono::jour>;
  template<> struct hash<chrono::mois>;
  template<> struct hash<chrono::année>;
  template<> struct hash<chrono::jour de la semaine>;
  template<> struct hash<chrono::weekday_indexed>;
  template<> struct hash<chrono::weekday_last>;
  template<> struct hash<chrono::month_day>;
  template<> struct hash<chrono::month_day_last>;
  template<> struct hash<chrono::month_weekday>;
  template<> struct hash<chrono::month_weekday_last>;
  template<> struct hash<chrono::year_month>;
  template<> struct hash<chrono::year_month_day>;
  template<> struct hash<chrono::year_month_day_last>;
  template<> struct hash<chrono::year_month_weekday>;
  template<> struct hash<chrono::year_month_weekday_last>;
  template<class Duration, class TimeZonePtr>
    struct hash<chrono::zoned_time<Duration, TimeZonePtr>>;
  template<> struct hash<chrono::seconde intercalaire>;
}

Modèle de classe std::chrono::duration

namespace std::chrono {
  template<class Rep, class Period = ratio<1>>
  class duration {
  public:
    using rep    = Rep;
    using period = typename Period::type;
  private:
    rep rep_;       // exposition uniquement
  public:
    // construction/copie/destruction
    constexpr duration() = default;
    template<class Rep2>
      constexpr explicit duration(const Rep2& r);
    template<class Rep2, class Period2>
      constexpr duration(const duration<Rep2, Period2>& d);
    ~duration() = default;
    duration(const duration&) = default;
    duration& operator=(const duration&) = default;
    // observateur
    constexpr rep count() const;
    // arithmétique
    constexpr common_type_t<duration> operator+() const;
    constexpr common_type_t<duration> operator-() const;
    constexpr duration& operator++();
    constexpr duration  operator++(int);
    constexpr duration& operator--();
    constexpr duration  operator--(int);
    constexpr duration& operator+=(const duration& d);
    constexpr duration& operator-=(const duration& d);
    constexpr duration& operator*=(const rep& rhs);
    constexpr duration& operator/=(const rep& rhs);
    constexpr duration& operator%=(const rep& rhs);
    constexpr duration& operator%=(const duration& rhs);
    // valeurs spéciales
    static constexpr duration zero() noexcept;
    static constexpr duration min() noexcept;
    static constexpr duration max() noexcept;
  };
}

Modèle de classe std::chrono::time_point

namespace std::chrono {
  template<class Clock, class Duration = typename Clock::duration>
  class time_point {
  public:
    using clock    = Clock;
    using duration = Duration;
    using rep      = typename duration::rep;
    using period   = typename duration::period;
  private:
    duration d_;                                                // exposition uniquement
  public:
    // constructeurs
    constexpr time_point();                                     // a pour valeur epoch
    constexpr explicit time_point(const duration& d);           // identique à time_point() + d
    template<class Duration2>
      constexpr time_point(const time_point<clock, Duration2>& t);
    // observateur
    constexpr duration time_since_epoch() const;
    // arithmétique
    constexpr time_point& operator++();
    constexpr time_point operator++(int);
    constexpr time_point& operator--();
    constexpr time_point operator--(int);
    constexpr time_point& operator+=(const duration& d);
    constexpr time_point& operator-=(const duration& d);
    // valeurs spéciales
    static constexpr time_point min() noexcept;
    static constexpr time_point max() noexcept;
  };
}

Spécialisation du modèle de classe std::common_type pour std::chrono::duration

namespace std {
  template<class Rep1, class Period1, class Rep2, class Period2>
    struct common_type<chrono::duration<Rep1, Period1>,
                       chrono::duration<Rep2, Period2>> {
      using type = chrono::duration<common_type_t<Rep1, Rep2>, /* voir description */>;
    };
}

Spécialisation du modèle de classe std::common_type pour std::chrono::time_point

namespace std {
  template<class Clock, class Duration1, class Duration2>
    struct common_type<chrono::time_point<Clock, Duration1>,
                       chrono::time_point<Clock, Duration2>> {
      using type = chrono::time_point<Clock, common_type_t<Duration1, Duration2>>;
    };
}

Modèle de classe std::chrono::treat_as_floating_point

template<class Rep> struct treat_as_floating_point : is_floating_point<Rep> { };

Modèle de classe std::chrono::duration_values

namespace std::chrono {
  template<class Rep>
    struct duration_values {
    public:
      static constexpr Rep zero() noexcept;
      static constexpr Rep min() noexcept;
      static constexpr Rep max() noexcept;
    };
}
**Note:** Le code C++ n'a pas été traduit conformément aux instructions, car il se trouve dans des balises `
` et contient des termes spécifiques au C++ qui doivent être préservés. Seul le texte environnant (s'il y en avait) aurait été traduit en français.

Classe std::chrono::system_clock

namespace std::chrono {
  class system_clock {
  public:
    using rep        = /* voir description */;
    using period     = ratio</* non spécifié */, /* non spécifié */>;
    using duration   = chrono::duration<rep, period>;
    using time_point = chrono::time_point<system_clock>;
    static constexpr bool is_steady = /* non spécifié */;
    static time_point now() noexcept;
    // correspondance vers/depuis le type C time_t
    static time_t      to_time_t  (const time_point& t) noexcept;
    static time_point  from_time_t(time_t t) noexcept;
  };
}

Classe std:: chrono :: utc_clock

namespace std::chrono {
  class utc_clock {
  public:
    using rep                       = /* un type arithmétique signé */;
    using period                    = ratio</* non spécifié */, /* non spécifié */>;
    using duration                  = chrono::duration<rep, period>;
    using time_point                = chrono::time_point<utc_clock>;
    static constexpr bool is_steady = /* non spécifié */;
    static time_point now();
    template<class Duration>
      static sys_time<common_type_t<Duration, seconds>>
        to_sys(const utc_time<Duration>& t);
    template<class Duration>
      static utc_time<common_type_t<Duration, seconds>>
        from_sys(const sys_time<Duration>& t);
  };
}

Classe std:: chrono :: tai_clock

namespace std::chrono {
  class tai_clock {
  public:
    using rep                       = /* un type arithmétique signé */;
    using period                    = ratio</* non spécifié */, /* non spécifié */>;
    using duration                  = chrono::duration<rep, period>;
    using time_point                = chrono::time_point<tai_clock>;
    static constexpr bool is_steady = /* non spécifié */;
    static time_point now();
    template<class Duration>
      static sys_time<common_type_t<Duration, seconds>>
        to_sys(const tai_time<Duration>& t);
    template<class Duration>
      static tai_time<common_type_t<Duration, seconds>>
        from_sys(const sys_time<Duration>& t);
  };
}

Classe std:: chrono :: gps_clock

namespace std::chrono {
  class gps_clock {
  public:
    using rep                       = /* un type arithmétique signé */;
    using period                    = ratio</* non spécifié */, /* non spécifié */>;
    using duration                  = chrono::duration<rep, period>;
    using time_point                = chrono::time_point<gps_clock>;
    static constexpr bool is_steady = /* non spécifié */;
    static time_point now();
    template<class Duration>
      static sys_time<common_type_t<Duration, seconds>>
        to_sys(const gps_time<Duration>& t);
    template<class Duration>
      static gps_time<common_type_t<Duration, seconds>>
        from_sys(const sys_time<Duration>& t);
  };
}

Classe std::chrono::steady_clock

namespace std::chrono {
  class steady_clock {
  public:
    using rep        = /* non spécifié */;
    using period     = ratio</* non spécifié */, /* non spécifié */>;
    using duration   = chrono::duration<rep, period>;
    using time_point = chrono::time_point</* non spécifié */, duration>;
    static constexpr bool is_steady = true;
    static time_point now() noexcept;
  };
}

Classe std::chrono::high_resolution_clock

namespace std::chrono {
  class high_resolution_clock {
  public:
    using rep        = /* non spécifié */;
    using period     = ratio</* non spécifié */, /* non spécifié */>;
    using duration   = chrono::duration<rep, period>;
    using time_point = chrono::time_point</* non spécifié */, duration>;
    static constexpr bool is_steady = /* non spécifié */;
    static time_point now() noexcept;
  };
}

Modèle de classe std:: chrono :: clock_time_conversion

namespace std::chrono {
  template<class DestClock, class SourceClock>
  struct clock_time_conversion {};
  template<class Clock>
  struct clock_time_conversion<Clock, Clock> {
    template<class Duration>
      time_point<Clock, Duration>
        operator()(const time_point<Clock, Duration>& t) const;
  };
  template<>
  struct clock_time_conversion<system_clock, system_clock> {
    template<class Duration>
      sys_time<Duration>
        operator()(const sys_time<Duration>& t) const;
  };
  template<>
  struct clock_time_conversion<utc_clock, utc_clock> {
    template<class Duration>
      utc_time<Duration>
        operator()(const utc_time<Duration>& t) const;
  };
  template<>
  struct clock_time_conversion<utc_clock, system_clock> {
    template<class Duration>
      utc_time<common_type_t<Duration, seconds>>
        operator()(const sys_time<Duration>& t) const;
  };
  template<>
  struct clock_time_conversion<system_clock, utc_clock> {
    template<class Duration>
      sys_time<common_type_t<Duration, seconds>>
        operator()(const utc_time<Duration>& t) const;
  };
  template<class SourceClock>
  struct clock_time_conversion<system_clock, SourceClock> {
    template<class Duration>
      auto operator()(const time_point<SourceClock, Duration>& t) const
        -> decltype(SourceClock::to_sys(t));
  };
  template<class DestClock>
  struct clock_time_conversion<DestClock, system_clock> {
    template<class Duration>
      auto operator()(const sys_time<Duration>& t) const
        -> decltype(DestClock::from_sys(t));
  };
  template<class SourceClock>
  struct clock_time_conversion<utc_clock, SourceClock> {
    template<class Duration>
      auto operator()(const time_point<SourceClock, Duration>& t) const
        -> decltype(SourceClock::to_utc(t));
  };
  template<class DestClock>
  struct clock_time_conversion<DestClock, utc_clock> {
    template<class Duration>
      auto operator()(const utc_time<Duration>& t) const
        -> decltype(DestClock::from_utc(t));
  };
}

Classe std:: chrono :: last_spec

namespace std::chrono {
  struct last_spec {
    explicit last_spec() = default;
  };
}

Classe std:: chrono :: day

namespace std::chrono {
  class day {
    unsigned char d_;           // exposition uniquement
  public:
    day() = default;
    constexpr explicit day(unsigned d) noexcept;
    constexpr day& operator++()    noexcept;
    constexpr day  operator++(int) noexcept;
    constexpr day& operator--()    noexcept;
    constexpr day  operator--(int) noexcept;
    constexpr day& operator+=(const days& d) noexcept;
    constexpr day& operator-=(const days& d) noexcept;
    constexpr explicit operator unsigned() const noexcept;
    constexpr bool ok() const noexcept;
  };
}

Classe std:: chrono :: month

namespace std::chrono {
  class month {
    unsigned char m_;           // exposition uniquement
  public:
    month() = default;
    constexpr explicit month(unsigned m) noexcept;
    constexpr month& operator++()    noexcept;
    constexpr month  operator++(int) noexcept;
    constexpr month& operator--()    noexcept;
    constexpr month  operator--(int) noexcept;
    constexpr month& operator+=(const months& m) noexcept;
    constexpr month& operator-=(const months& m) noexcept;
    constexpr explicit operator unsigned() const noexcept;
    constexpr bool ok() const noexcept;
  };
}

Classe std:: chrono :: year

namespace std::chrono {
  class year {
    short y_;                   // exposition uniquement
  public:
    year() = default;
    constexpr explicit year(int y) noexcept;
    constexpr year& operator++()    noexcept;
    constexpr year  operator++(int) noexcept;
    constexpr year& operator--()    noexcept;
    constexpr year  operator--(int) noexcept;
    constexpr year& operator+=(const years& y) noexcept;
    constexpr year& operator-=(const years& y) noexcept;
    constexpr year operator+() const noexcept;
    constexpr year operator-() const noexcept;
    constexpr bool is_leap() const noexcept;
    constexpr explicit operator int() const noexcept;
    constexpr bool ok() const noexcept;
    static constexpr year min() noexcept;
    static constexpr year max() noexcept;
  };
}

Classe std:: chrono :: weekday

namespace std::chrono {
  class weekday {
    unsigned char wd_;          // exposition uniquement
  public:
    weekday() = default;
    constexpr explicit weekday(unsigned wd) noexcept;
    constexpr weekday(const sys_days& dp) noexcept;
    constexpr explicit weekday(const local_days& dp) noexcept;
    constexpr weekday& operator++()    noexcept;
    constexpr weekday  operator++(int) noexcept;
    constexpr weekday& operator--()    noexcept;
    constexpr weekday  operator--(int) noexcept;
    constexpr weekday& operator+=(const days& d) noexcept;
    constexpr weekday& operator-=(const days& d) noexcept;
    constexpr unsigned c_encoding() const noexcept;
    constexpr unsigned iso_encoding() const noexcept;
    constexpr bool ok() const noexcept;
    constexpr weekday_indexed operator[](unsigned index) const noexcept;
    constexpr weekday_last    operator[](last_spec) const noexcept;
  };
}

Classe std:: chrono :: weekday_indexed

namespace std::chrono {
  class weekday_indexed {
    chrono::weekday  wd_;       // exposition uniquement
    unsigned char    index_;    // exposition uniquement
  public:
    weekday_indexed() = default;
    constexpr weekday_indexed(const chrono::weekday& wd, unsigned index) noexcept;
    constexpr chrono::weekday weekday() const noexcept;
    constexpr unsigned        index()   const noexcept;
    constexpr bool ok() const noexcept;
  };
}

Classe std:: chrono :: weekday_last

namespace std::chrono {
  class weekday_last {
    chrono::weekday wd_;                // exposition uniquement
    public:
    constexpr explicit weekday_last(const chrono::weekday& wd) noexcept;
    constexpr chrono::weekday weekday() const noexcept;
    constexpr bool ok() const noexcept;
  };
}

Classe std:: chrono :: month_day

namespace std::chrono {
  class month_day {
    chrono::month m_;           // exposition uniquement
    chrono::day   d_;           // exposition uniquement
  public:
    month_day() = default;
    constexpr month_day(const chrono::month& m, const chrono::day& d) noexcept;
    constexpr chrono::month month() const noexcept;
    constexpr chrono::day   day()   const noexcept;
    constexpr bool ok() const noexcept;
  };
}

Classe std:: chrono :: month_day_last

namespace std::chrono {
  class month_day_last {
    chrono::month m_;                   // exposition uniquement
  public:
    constexpr explicit month_day_last(const chrono::month& m) noexcept;
    constexpr chrono::month month() const noexcept;
    constexpr bool ok() const noexcept;
  };
}

Classe std:: chrono :: month_weekday

namespace std::chrono {
  class month_weekday {
    chrono::month           m_;         // exposition uniquement
    chrono::weekday_indexed wdi_;       // exposition uniquement
  public:
    constexpr month_weekday(const chrono::month& m,
                            const chrono::weekday_indexed& wdi) noexcept;
    constexpr chrono::month           month()           const noexcept;
    constexpr chrono::weekday_indexed weekday_indexed() const noexcept;
    constexpr bool ok() const noexcept;
  };
}

Classe std:: chrono :: month_weekday_last

namespace std::chrono {
  class month_weekday_last {
    chrono::month        m_;    // exposition uniquement
    chrono::weekday_last wdl_;  // exposition uniquement
  public:
    constexpr month_weekday_last(const chrono::month& m,
                                 const chrono::weekday_last& wdl) noexcept;
    constexpr chrono::month        month()        const noexcept;
    constexpr chrono::weekday_last weekday_last() const noexcept;
    constexpr bool ok() const noexcept;
  };
}

Classe std:: chrono :: year_month

namespace std::chrono {
  class year_month {
    chrono::year  y_;           // exposition uniquement
    chrono::month m_;           // exposition uniquement
  public:
    year_month() = default;
    constexpr year_month(const chrono::year& y, const chrono::month& m) noexcept;
    constexpr chrono::year  year()  const noexcept;
    constexpr chrono::month month() const noexcept;
    constexpr year_month& operator+=(const months& dm) noexcept;
    constexpr year_month& operator-=(const months& dm) noexcept;
    constexpr year_month& operator+=(const years& dy)  noexcept;
    constexpr year_month& operator-=(const years& dy)  noexcept;
    constexpr bool ok() const noexcept;
  };
}

Classe std:: chrono :: year_month_day

namespace std::chrono {
  class year_month_day {
    chrono::year  y_;           // exposition uniquement
    chrono::month m_;           // exposition uniquement
    chrono::day   d_;           // exposition uniquement
  public:
    year_month_day() = default;
    constexpr year_month_day(const chrono::year& y, const chrono::month& m,
                             const chrono::day& d) noexcept;
    constexpr year_month_day(const year_month_day_last& ymdl) noexcept;
    constexpr year_month_day(const sys_days& dp) noexcept;
    constexpr explicit year_month_day(const local_days& dp) noexcept;
    constexpr year_month_day& operator+=(const months& m) noexcept;
    constexpr year_month_day& operator-=(const months& m) noexcept;
    constexpr year_month_day& operator+=(const years& y)  noexcept;
    constexpr year_month_day& operator-=(const years& y)  noexcept;
    constexpr chrono::year  year()  const noexcept;
    constexpr chrono::month month() const noexcept;
    constexpr chrono::day   day()   const noexcept;
    constexpr          operator sys_days()   const noexcept;
    constexpr explicit operator local_days() const noexcept;
    constexpr bool ok() const noexcept;
  };
}

Classe std:: chrono :: year_month_day_last

namespace std::chrono {
  class year_month_day_last {
    chrono::year           y_;          // exposition uniquement
    chrono::month_day_last mdl_;        // exposition uniquement
  public:
    constexpr year_month_day_last(const chrono::year& y,
                                  const chrono::month_day_last& mdl) noexcept;
    constexpr year_month_day_last& operator+=(const months& m) noexcept;
    constexpr year_month_day_last& operator-=(const months& m) noexcept;
    constexpr year_month_day_last& operator+=(const years& y)  noexcept;
    constexpr year_month_day_last& operator-=(const years& y)  noexcept;
    constexpr chrono::year           year()           const noexcept;
    constexpr chrono::month          month()          const noexcept;
    constexpr chrono::month_day_last month_day_last() const noexcept;
    constexpr chrono::day            day()            const noexcept;
    constexpr          operator sys_days()   const noexcept;
    constexpr explicit operator local_days() const noexcept;
    constexpr bool ok() const noexcept;
  };
}

Classe std:: chrono :: year_month_weekday

namespace std::chrono {
  class year_month_weekday {
    chrono::year            y_;         // exposition uniquement
    chrono::month           m_;         // exposition uniquement
    chrono::weekday_indexed wdi_;       // exposition uniquement
  public:
    year_month_weekday() = default;
    constexpr year_month_weekday(const chrono::year& y, const chrono::month& m,
                                 const chrono::weekday_indexed& wdi) noexcept;
    constexpr year_month_weekday(const sys_days& dp) noexcept;
    constexpr explicit year_month_weekday(const local_days& dp) noexcept;
    constexpr year_month_weekday& operator+=(const months& m) noexcept;
    constexpr year_month_weekday& operator-=(const months& m) noexcept;
    constexpr year_month_weekday& operator+=(const years& y)  noexcept;
    constexpr year_month_weekday& operator-=(const years& y)  noexcept;
    constexpr chrono::year            year()            const noexcept;
    constexpr chrono::month           month()           const noexcept;
    constexpr chrono::weekday         weekday()         const noexcept;
    constexpr unsigned                index()           const noexcept;
    constexpr chrono::weekday_indexed weekday_indexed() const noexcept;
    constexpr          operator sys_days()   const noexcept;
    constexpr explicit operator local_days() const noexcept;
    constexpr bool ok() const noexcept;
  };
}

Classe std:: chrono :: year_month_weekday_last

namespace std::chrono {
  class year_month_weekday_last {
    chrono::year         y_;    // exposition uniquement
    chrono::month        m_;    // exposition uniquement
    chrono::weekday_last wdl_;  // exposition uniquement
  public:
    constexpr year_month_weekday_last(const chrono::year& y, const chrono::month& m,
                                      const chrono::weekday_last& wdl) noexcept;
    constexpr year_month_weekday_last& operator+=(const months& m) noexcept;
    constexpr year_month_weekday_last& operator-=(const months& m) noexcept;
    constexpr year_month_weekday_last& operator+=(const years& y)  noexcept;
    constexpr year_month_weekday_last& operator-=(const years& y)  noexcept;
    constexpr chrono::year         year()         const noexcept;
    constexpr chrono::month        month()        const noexcept;
    constexpr chrono::weekday      weekday()      const noexcept;
    constexpr chrono::weekday_last weekday_last() const noexcept;
    constexpr          operator sys_days()   const noexcept;
    constexpr explicit operator local_days() const noexcept;
    constexpr bool ok() const noexcept;
  };
}

Modèle de classe std::chrono::hh_mm_ss

namespace std::chrono {
  template<class Duration> class hh_mm_ss {
  public:
    static constexpr unsigned fractional_width = /* voir description */;
    using precision                            = /* voir description */;
    constexpr hh_mm_ss() noexcept : hh_mm_ss{Duration::zero()} {}
    constexpr explicit hh_mm_ss(Duration d);
    constexpr bool is_negative() const noexcept;
    constexpr chrono::hours hours() const noexcept;
    constexpr chrono::minutes minutes() const noexcept;
    constexpr chrono::seconds seconds() const noexcept;
    constexpr precision subseconds() const noexcept;
    constexpr explicit operator precision() const noexcept;
    constexpr precision to_duration() const noexcept;
  private:
    bool            is_neg;     // exposition uniquement
    chrono::hours   h;          // exposition uniquement
    chrono::minutes m;          // exposition uniquement
    chrono::seconds s;          // exposition uniquement
    precision       ss;         // exposition uniquement
  };
}

Classe std:: chrono :: tzdb

namespace std::chrono {
  struct tzdb {
    string                 version;
    vector<time_zone>      zones;
    vector<time_zone_link> links;
    vector<leap_second>    leap_seconds;
    const time_zone* locate_zone(string_view tz_name) const;
    const time_zone* current_zone() const;
  };
}

Classe std:: chrono :: tzdb_list

namespace std::chrono {
  class tzdb_list {
  public:
    tzdb_list(const tzdb_list&) = delete;
    tzdb_list& operator=(const tzdb_list&) = delete;
    // constructeurs supplémentaires non spécifiés
    class const_iterator;
    const tzdb& front() const noexcept;
    const_iterator erase_after(const_iterator p);
    const_iterator begin() const noexcept;
    const_iterator end()   const noexcept;
    const_iterator cbegin() const noexcept;
    const_iterator cend()   const noexcept;
  };
}

Classe std:: chrono :: nonexistent_local_time

namespace std::chrono {
  class nonexistent_local_time : public runtime_error {
  public:
    template<class Duration>
      nonexistent_local_time(const local_time<Duration>& tp, const local_info& i);
  };
}

Classe std:: chrono :: ambiguous_local_time

namespace std::chrono {
  class ambiguous_local_time : public runtime_error {
  public:
    template<class Duration>
      ambiguous_local_time(const local_time<Duration>& tp, const local_info& i);
  };
}

Classe std:: chrono :: sys_info

namespace std::chrono {
  struct sys_info {
    sys_seconds   begin;
    sys_seconds   end;
    seconds       offset;
    minutes       save;
    string        abbrev;
  };
}

Classe std:: chrono :: local_info

namespace std::chrono {
  struct local_info {
    static constexpr int unique      = 0;
    static constexpr int nonexistent = 1;
    static constexpr int ambiguous   = 2;
    int result;
    sys_info first;
    sys_info second;
  };
}
**Note:** Le code C++ n'a pas été traduit car il se trouve dans des balises `
` et contient des termes spécifiques au C++ qui doivent être préservés selon les instructions. Seul le texte environnant aurait été traduit s'il y en avait eu.

Classe std:: chrono :: time_zone

namespace std::chrono {
  class time_zone {
  public:
    time_zone(time_zone&&) = default;
    time_zone& operator=(time_zone&&) = default;
    // constructeurs supplémentaires non spécifiés
    string_view name() const noexcept;
    template<class Duration> sys_info   get_info(const sys_time<Duration>& st)   const;
    template<class Duration> local_info get_info(const local_time<Duration>& tp) const;
    template<class Duration>
      sys_time<common_type_t<Duration, seconds>>
        to_sys(const local_time<Duration>& tp) const;
    template<class Duration>
      sys_time<common_type_t<Duration, seconds>>
        to_sys(const local_time<Duration>& tp, choose z) const;
    template<class Duration>
      local_time<common_type_t<Duration, seconds>>
        to_local(const sys_time<Duration>& tp) const;
  };
}

Modèle de classe std:: chrono :: zoned_traits

namespace std::chrono {
  template<class T> struct zoned_traits {};
  template<> struct zoned_traits<const time_zone*> {
    static const time_zone* default_zone();
    static const time_zone* locate_zone(string_view name);
  };
}

Modèle de classe std:: chrono :: zoned_time

namespace std::chrono {
  template<class Duration, class TimeZonePtr = const time_zone*>
  class zoned_time {
  public:
    using duration = common_type_t<Duration, seconds>;
  private:
    TimeZonePtr        zone_;                   // exposition uniquement
    sys_time<duration> tp_;                     // exposition uniquement
    using traits = zoned_traits<TimeZonePtr>;   // exposition uniquement
  public:
    zoned_time();
    zoned_time(const zoned_time&) = default;
    zoned_time& operator=(const zoned_time&) = default;
    zoned_time(const sys_time<Duration>& st);
    explicit zoned_time(TimeZonePtr z);
    explicit zoned_time(string_view name);
    template<class Duration2>
      zoned_time(const zoned_time<Duration2, TimeZonePtr>& zt);
    zoned_time(TimeZonePtr z,    const sys_time<Duration>& st);
    zoned_time(string_view name, const sys_time<Duration>& st);
    zoned_time(TimeZonePtr z,    const local_time<Duration>& tp);
    zoned_time(string_view name, const local_time<Duration>& tp);
    zoned_time(TimeZonePtr z,    const local_time<Duration>& tp, choose c);
    zoned_time(string_view name, const local_time<Duration>& tp, choose c);
    template<class Duration2, class TimeZonePtr2>
      zoned_time(TimeZonePtr z, const zoned_time<Duration2, TimeZonePtr2>& zt);
    template<class Duration2, class TimeZonePtr2>
      zoned_time(TimeZonePtr z, const zoned_time<Duration2, TimeZonePtr2>& zt, choose);
    template<class Duration2, class TimeZonePtr2>
      zoned_time(string_view name, const zoned_time<Duration2, TimeZonePtr2>& zt);
    template<class Duration2, class TimeZonePtr2>
      zoned_time(string_view name, const zoned_time<Duration2, TimeZonePtr2>& zt, choose);
    zoned_time& operator=(const sys_time<Duration>& st);
    zoned_time& operator=(const local_time<Duration>& ut);
    operator sys_time<duration>() const;
    explicit operator local_time<duration>() const;
    TimeZonePtr          get_time_zone()  const;
    local_time<duration> get_local_time() const;
    sys_time<duration>   get_sys_time()   const;
    sys_info             get_info()       const;
  };
  zoned_time() -> zoned_time<seconds>;
  template<class Duration>
    zoned_time(sys_time<Duration>)
      -> zoned_time<common_type_t<Duration, seconds>>;
  template<class TimeZonePtrOrName>
    using /*représentation-du-fuseau-horaire*/ =        // exposition uniquement
      conditional_t<is_convertible_v<TimeZonePtrOrName, string_view>,
                    const time_zone*,
                    remove_cvref_t<TimeZonePtrOrName>>;
  template<class TimeZonePtrOrName>
    zoned_time(TimeZonePtrOrName&&)
      -> zoned_time<seconds, /*représentation-du-fuseau-horaire*/<TimeZonePtrOrName>>;
  template<class TimeZonePtrOrName, class Duration>
    zoned_time(TimeZonePtrOrName&&, sys_time<Duration>)
      -> zoned_time<common_type_t<Duration, seconds>,
                    /*représentation-du-fuseau-horaire*/<TimeZonePtrOrName>>;
  template<class TimeZonePtrOrName, class Duration>
    zoned_time(TimeZonePtrOrName&&, local_time<Duration>,
               choose = choose::le plus tôt)
      -> zoned_time<common_type_t<Duration, seconds>,
                    /*représentation-du-fuseau-horaire*/<TimeZonePtrOrName>>;
  template<class Duration, class TimeZonePtrOrName, class TimeZonePtr2>
    zoned_time(TimeZonePtrOrName&&, zoned_time<Duration, TimeZonePtr2>,
               choose = choose::le plus tôt)
      -> zoned_time<common_type_t<Duration, seconds>,
                    /*représentation-du-fuseau-horaire*/<TimeZonePtrOrName>>;
}

Classe std::chrono::leap_second

namespace std::chrono {
  class leap_second {
  public:
    leap_second(const leap_second&)            = default;
    leap_second& operator=(const leap_second&) = default;
    // constructeurs supplémentaires non spécifiés
    constexpr sys_seconds date() const noexcept;
    constexpr seconds value() const noexcept;
  };
}

Classe std::chrono::time_zone_link

namespace std::chrono {
  class time_zone_link {
  public:
    time_zone_link(time_zone_link&&)            = default;
    time_zone_link& operator=(time_zone_link&&) = default;
    // constructeurs supplémentaires non spécifiés
    string_view name()   const noexcept;
    string_view target() const noexcept;
  };
}

Modèle de classe local-time-format-t

namespace std::chrono {
  template<class Duration> struct /*local-time-format-t*/ {       // exposition uniquement
    local_time<Duration> time;                                    // exposition uniquement
    const string* abbrev;                                         // exposition uniquement
    const seconds* offset_sec;                                    // exposition uniquement
  };
}