Espacios de nombres
Variantes
Acciones

std::common_type(std::chrono::duration)

De cppreference.com
< cpp‎ | chrono‎ | duration
 
 
Biblioteca de servicios
 
 
 
Definido en el archivo de encabezado <chrono>
template<class Rep1, class Period1, class Rep2, class Period2>

struct common_type<std::chrono::duration<Rep1, Period1>,
                   std::chrono::duration<Rep2, Period2>>{
    typedefstd::chrono::duration<
        typenamestd::common_type<Rep1, Rep2>::type, /*véase Notas*/> type;

};
(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

#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)[editar]
Deduce el tipo del resultado de una expresión aritmética mixta
(plantilla de clase)[editar]
close