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]
-
- std:: chrono :: treat_as_floating_point < Rep > :: value est true .
- std:: chrono :: treat_as_floating_point < Rep2 > :: value est false .
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]
- std:: chrono :: treat_as_floating_point < Rep > :: value est true .
- Toutes les conditions suivantes sont satisfaites :
-
- std:: ratio_divide < Period2, Period > :: den est 1 .
- std:: chrono :: treat_as_floating_point < Rep2 > :: value est false .
- ↑ 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.
-
↑
Autrement dit, soit la durée utilise des ticks à virgule flottante, soit
Period2est exactement divisible parPeriod.
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 :
Exécuter ce code
#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) |