std::common_type(std::chrono::duration)
De cppreference.com
Definido en el archivo de encabezado <chrono> | ||
template<class Rep1, class Period1, class Rep2, class Period2> struct common_type<std::chrono::duration<Rep1, Period1>, | (desde C++11) | |
Expone el tipo llamado type
, que es el tipo común de dos std::chrono::durations, cuyo período es el máximo común divisor de Period1
y Period2
.
[editar]Notas
El período de la duración resultante se puede calcular formando una razón del máximo común divisor de Period1::num y Period2::num y el mínimo común múltiplo de Period1::den y Period2::den.
[editar]Ejemplo
Ejecuta este código
#include <type_traits>#include <iostream>#include <chrono> // std::chrono ya encuentra el máximo común divisor,// probablemente usando std::common_type<>. Hacemos// la deducción de tipo externamente. template<typename T,typename S>constexprauto durationDiff(const T& t, const S& s)->typenamestd::common_type<T,S>::type{typedeftypenamestd::common_type<T,S>::type Common;return Common(t)- Common(s);} int main(){usingnamespace std::literals; constexprauto ms = 30ms;constexprauto us = 1100us;constexprauto diff = durationDiff(ms, us); std::cout<< ms.count()<<"ms - "<< us.count()<<"μs = "<< diff.count()<<(std::is_same<decltype(diff), decltype(ms)>()?"ms":"μs")<<'\n';}
Salida:
30ms - 1100μs = 28900μs
[editar]Véase también
Especializa el rasgo std::common_type. (especialización de plantilla de clase) | |
(C++11) | Deduce el tipo del resultado de una expresión aritmética mixta (plantilla de clase) |