std::chrono::duration<Rep,Period>:: duration
From cppreference.net
|
constexpr
duration
(
)
=
default
;
|
(1) | (desde C++11) |
|
duration
(
const
duration
&
)
=
default
;
|
(2) | (desde C++11) |
|
template
<
class
Rep2
>
constexpr explicit duration ( const Rep2 & r ) ; |
(3) | (desde C++11) |
|
template
<
class
Rep2,
class
Period2
>
constexpr duration ( const duration < Rep2, Period2 > & d ) ; |
(4) | (desde C++11) |
Construye un nuevo
duration
a partir de una de varias fuentes de datos opcionales.
1)
El constructor predeterminado.
2)
El constructor de copia.
3)
Construye una duración con
r
ticks.
Esta sobrecarga participa en la resolución de sobrecarga solo si se cumplen todas las siguientes condiciones:
- is_convertible < const Rep2 & , Rep > :: value es true .
- Se cumple alguna de las siguientes condiciones: [1]
-
- std:: chrono :: treat_as_floating_point < Rep > :: value es true .
- std:: chrono :: treat_as_floating_point < Rep2 > :: value es false .
4)
Construye una duración convirtiendo
d
a un período y conteo de ticks apropiados, como si fuera mediante
std::
chrono
::
duration_cast
<
duration
>
(
d
)
.
count
(
)
.
Esta sobrecarga participa en la resolución de sobrecarga solo si no se induce desbordamiento en la conversión, y se cumple alguna de las siguientes condiciones:
[2]
- std:: chrono :: treat_as_floating_point < Rep > :: value es true .
- Se cumplen todas las siguientes condiciones:
-
- std:: ratio_divide < Period2, Period > :: den es 1 .
- std:: chrono :: treat_as_floating_point < Rep2 > :: value es false .
- ↑ Es decir, una duración con un recuento de ticks entero no puede construirse a partir de un valor de punto flotante, pero una duración con un recuento de ticks de punto flotante puede construirse a partir de un valor entero.
-
↑
Es decir, o la duración utiliza ticks de punto flotante, o
Period2es exactamente divisible porPeriod.
Contenidos |
Parámetros
| r | - | un contador de ticks |
| d | - | una duración desde la cual copiar |
Ejemplo
El siguiente código muestra varios ejemplos (tanto válidos como inválidos) de cómo construir duraciones:
Ejecutar este código
#include <chrono> int main() { std::chrono::hours h(1); // una hora std::chrono::milliseconds ms{3}; // 3 milisegundos std::chrono::duration<int, std::kilo> ks(3); // 3000 segundos // error: treat_as_floating_point<int>::value == false, // Esta duración solo permite conteos de ticks enteros // std::chrono::duration<int, std::kilo> d3(3.5); // Reloj de 30Hz usando ticks fraccionarios std::chrono::duration<double, std::ratio<1, 30>> hz30(3.5); // 3000 microsegundos construidos a partir de 3 milisegundos std::chrono::microseconds us = ms; // error: 1/1000000 no es divisible por 1/1000 // std::chrono::milliseconds ms2 = us std::chrono::duration<double, std::milli> ms2 = us; // 3.0 milisegundos }
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 2094 | C++11 |
para la sobrecarga
(4)
,
std::
ratio_divide
<
Period2, period
>
::
num
podría desbordarse al evaluar std:: ratio_divide < Period2, period > :: den |
la sobrecarga
(4)
no
participa en la resolución de sobrecarga en este caso |
| LWG 3050 | C++11 | la restricción de convertibilidad usaba xvalue no constante | usar lvalues constantes en su lugar |
Véase también
|
asigna los contenidos
(función miembro pública) |