std::common_type<std::chrono::duration>
Von cppreference.com
| Definiert in Header <chrono> |
||
| template< class Rep1, class Period1, class Rep2, class Period2 > struct common_type<std::chrono::duration<Rep1, Period1>, |
(seit C++11) | |
Exponiert den Typ namens type, welcher der gemeinsame Typ von zwei std::chrono::duration ist, deren Periode der größte gemeinsame Teiler von Period1 und Period2 ist.
Inhalt |
[bearbeiten] Member types
| Mitgliedertyp | Definition |
type
|
std::chrono::duration<typename std::common_type<Rep1, Rep2>::type, /* siehe Hinweis */> |
[bearbeiten] Hinweis
Die Periode der resultierenden Dauer kann durch Bildung eines Verhältnisses des größten gemeinsamen Teilers von Period1::num und Period2::num und des kleinsten gemeinsamen Vielfachen von Period1::den und Period2::den berechnet werden.
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#include <chrono> #include <iostream> #include <type_traits> // std::chrono already finds the greatest common divisor, // likely using std::common_type<>. We make the type // deduction externally. template<typename T,typename S> constexpr auto durationDiff(const T& t, const S& s) -> typename std::common_type<T,S>::type { typedef typename std::common_type<T,S>::type Common; return Common(t) - Common(s); } int main() { using namespace std::literals; constexpr auto ms = 30ms; constexpr auto us = 1100us; constexpr auto diff = durationDiff(ms, us); std::cout << ms << " - " << us << " = " << diff << '\n'; }
Ausgabe
30ms - 1100us = 28900us
[bearbeiten] Siehe auch
| spezialisiert den std::common_type-Trait (Klassentemplate-Spezialisierung) | |
| (C++11) |
ermittelt den gemeinsamen Typ einer Gruppe von Typen (Klassenvorlage) |