Namespaces
Variants

std::chrono::duration<Rep,Period>:: duration

From cppreference.net
constexpr duration ( ) = default ;
(1) (depuis C++11)
duration ( const duration & ) = default ;
(2) (depuis C++11)
template < class Rep2 >
constexpr explicit duration ( const Rep2 & r ) ;
(3) (depuis C++11)
template < class Rep2, class Period2 >
constexpr duration ( const duration < Rep2, Period2 > & d ) ;
(4) (depuis C++11)

Construit un nouveau duration à partir de l'une des plusieurs sources de données optionnelles.

1) Le constructeur par défaut.
2) Le constructeur de copie.
3) Construit une durée avec r ticks.
Cette surcharge participe à la résolution de surcharge uniquement si toutes les conditions suivantes sont satisfaites :
  • is_convertible < const Rep2 & , Rep > :: value est true .
  • Au moins une des conditions suivantes est satisfaite : [1]
4) Construit une durée en convertissant d en une période et un compte de ticks appropriés, comme par std:: chrono :: duration_cast < duration > ( d ) . count ( ) .
Cette surcharge participe à la résolution de surcharge uniquement si aucun dépassement de capacité n'est induit dans la conversion, et si l'une des conditions suivantes est satisfaite : [2]
  1. Autrement dit, une durée avec un compteur de ticks entier ne peut pas être construite à partir d'une valeur à virgule flottante, mais une durée avec un compteur de ticks à virgule flottante peut être construite à partir d'une valeur entière.
  2. Autrement dit, soit la durée utilise des ticks à virgule flottante, soit Period2 est exactement divisible par Period .

Table des matières

Paramètres

r - un compteur de ticks
d - une durée à copier

Exemple

Le code suivant montre plusieurs exemples (valides et invalides) de construction de durées :

#include <chrono>
int main()
{
    std::chrono::hours h(1); // une heure
    std::chrono::milliseconds ms{3}; // 3 millisecondes
    std::chrono::duration<int, std::kilo> ks(3); // 3000 secondes
    // erreur : treat_as_floating_point<int>::value == false,
    // Cette durée n'autorise que des compteurs de ticks entiers
//  std::chrono::duration<int, std::kilo> d3(3.5);
    // Horloge 30Hz utilisant des ticks fractionnaires
    std::chrono::duration<double, std::ratio<1, 30>> hz30(3.5);
    // 3000 microsecondes construites à partir de 3 millisecondes
    std::chrono::microseconds us = ms;
    // erreur : 1/1000000 n'est pas divisible par 1/1000
//  std::chrono::milliseconds ms2 = us
    std::chrono::duration<double, std::milli> ms2 = us; // 3.0 millisecondes
}

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Appliqué à Comportement publié Comportement corrigé
LWG 2094 C++11 pour la surcharge (4) , std:: ratio_divide < Period2, period > :: num
pouvait déborder lors de l'évaluation
std:: ratio_divide < Period2, period > :: den
la surcharge (4) ne participe
pas à la résolution de surcharge
dans ce cas
LWG 3050 C++11 la contrainte de convertibilité utilisait des xvalues non constants utiliser des lvalues constantes à la place

Voir aussi

assigne le contenu
(fonction membre publique)