operator+,-,*,/,%(std::chrono::duration)
template<class Rep1, class Period1, class Rep2, class Period2 > typenamestd::common_type<duration<Rep1,Period1>, duration<Rep2,Period2>>::type | (1) | |
template<class Rep1, class Period1, class Rep2, class Period2 > typenamestd::common_type<duration<Rep1,Period1>, duration<Rep2,Period2>>::type | (2) | |
template<class Rep1, class Period, class Rep2 > duration<typenamestd::common_type<Rep1,Rep2>::type, Period> | (3) | |
template<class Rep1, class Rep2, class Period > duration<typenamestd::common_type<Rep1,Rep2>::type, Period> | (4) | |
template<class Rep1, class Period, class Rep2 > duration<typenamestd::common_type<Rep1,Rep2>::type, Period> | (5) | |
template<class Rep1, class Period1, class Rep2, class Period2 > typenamestd::common_type<Rep1,Rep2>::type | (6) | |
template<class Rep1, class Period, class Rep2 > duration<typenamestd::common_type<Rep1,Rep2>::type, Period> | (7) | |
template<class Rep1, class Period1, class Rep2, class Period2 > typenamestd::common_type<duration<Rep1,Period1>, duration<Rep2,Period2>>::type | (8) | |
Realiza operaciones aritméticas básicas entre dos duraciones o entre una duración y una cuenta de tics.
rhs
de tics restado del número lhs
de tics después de la conversión.d
a una cuya rep
es el tipo común entre Rep1
y Rep2
, y multiplica el número de tics después de la conversión por s
. Estas sobrecargas solo participan en la resolución de sobrecargas si s
es convertible a typenamestd::common_type<Rep1, Rep2>::type.d
a una cuya rep
es el tipo común entre Rep1
y Rep2
, y divide el número de tics después de la conversión por s
. Esta sobrecarga solo participa en la resolución de sobrecargas si s
es convertible a typenamestd::common_type<Rep1, Rep2>::type y Rep2
no es una especialización de duration
.lhs
después de la conversión por la cuenta de tics de rhs
después de la conversión. Ten en cuenta que el valor de retorno de este operador no es una duración.d
a una cuya rep
es el tipo común entre Rep1
y Rep2
, y crea una duración cuya cuenta de tics es el resto de la división de la cuenta de tics, después de la conversión, por s
. Esta sobrecarga solo participa en la resolución de sobrecargas si s
es convertible a typenamestd::common_type<Rep1, Rep2>::type y Rep2
no es una especialización de duration
.Contenido |
[editar]Parámetros
lhs | - | Duración en el lado izquierdo del operador. |
rhs | - | Duración en el lado derecho del operador. |
d | - | El argumento de duración para operadores de argumentos mixtos. |
s | - | El argumento que no es duración para operadores de argumentos mixtos. |
[editar]Valor de retorno
Suponiendo que CD es el tipo de retorno de función y CR<A, B>=std::common_type<A, B>::type, entonces:
[editar]Ejemplo
#include <chrono>#include <iostream>int main(){// aritmética simplestd::chrono::seconds s =std::chrono::hours(1)+2*std::chrono::minutes(10)+std::chrono::seconds(70)/10; std::cout<<"1 hora + 2*10 min + 70/10 sec = "<< s.count()<<" segundos\n"; // diferencia entre dividir una duracion por un número// y dividir una duración por otra duraciónstd::cout<<"Dividir eso por 2 minutos da "<< s /std::chrono::minutes(2)<<'\n';std::cout<<"Dividir eso por 2 da "<<(s /2).count()<<" segundos\n"; // el operador de resto es útil para determinar en qué parte de un período// de tiempo se encuentra esta duración particular, p. para dividirlo en horas,// minutos y segundos:std::cout<< s.count()<<" segundos es "<<std::chrono::duration_cast<std::chrono::hours>( s ).count()<<" hora(s), "<<std::chrono::duration_cast<std::chrono::minutes>( s %std::chrono::hours(1)).count()<<" minutos, "<<std::chrono::duration_cast<std::chrono::seconds>( s %std::chrono::minutes(1)).count()<<" segundos\n";}
Salida:
1 hora + 2*10 min + 70/10 sec = 4807 segundos Dividir eso por 2 minutos da 40 Dividir eso por 2 da 2403 segundos 4807 segundos es 1 hora(s), 20 minutos, 7 segundos
[editar]Informes de defectos
Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.
ID | Aplicado a | Comportamiento según lo publicado | Comportamiento correcto |
---|---|---|---|
LWG 3050 | C++11 | La restricción de convertibilidad usaba un x-valor no const. | Usa l-valores const en su lugar. |