Namensräume
Varianten
Aktionen

operator==,!=,<,<=,>,>=,<=>(std::chrono::duration)

Von cppreference.com
< cpp‎ | chrono‎ | duration
 
 
 
 
template< class Rep1, class Period1, class Rep2, class Period2 >

constexpr bool operator==( const std::chrono::duration<Rep1, Period1>& lhs,

                           const std::chrono::duration<Rep2, Period2>& rhs );
(1) (seit C++11)
template< class Rep1, class Period1, class Rep2, class Period2 >

constexpr bool operator!=( const std::chrono::duration<Rep1, Period1>& lhs,

                           const std::chrono::duration<Rep2, Period2>& rhs );
(2) (seit C++11)
(bis C++20)
template< class Rep1, class Period1, class Rep2, class Period2 >

constexpr bool operator<( const std::chrono::duration<Rep1, Period1>& lhs,

                          const std::chrono::duration<Rep2, Period2>& rhs );
(3) (seit C++11)
template< class Rep1, class Period1, class Rep2, class Period2 >

constexpr bool operator<=( const std::chrono::duration<Rep1, Period1>& lhs,

                           const std::chrono::duration<Rep2, Period2>& rhs );
(4) (seit C++11)
template< class Rep1, class Period1, class Rep2, class Period2 >

constexpr bool operator>( const std::chrono::duration<Rep1, Period1>& lhs,

                          const std::chrono::duration<Rep2, Period2>& rhs );
(5) (seit C++11)
template< class Rep1, class Period1, class Rep2, class Period2 >

constexpr bool operator>=( const std::chrono::duration<Rep1, Period1>& lhs,

                           const std::chrono::duration<Rep2, Period2>& rhs );
(6) (seit C++11)
template< class Rep1, class Period1, class Rep2, class Period2 >

    requires std::three_way_comparable<std::common_type_t<Rep1, Rep2>>
constexpr auto operator<=>( const std::chrono::duration<Rep1, Period1>& lhs,

                            const std::chrono::duration<Rep2, Period2>& rhs );
(7) (seit C++20)

Vergleicht zwei Dauerobjekte. Sei CT der gemeinsame Typ für beide Dauerobjekte, d.h. std::common_type<std::chrono::duration<Rep1, Period1>, std::chrono::duration<Rep2, Period2>>::type.

1,2) Prüft, ob lhs und rhs gleich sind, d.h. ob die Anzahl der Ticks für den gemeinsamen Typ beider Dauerobjekte gleich ist.
3-6) Vergleicht lhs mit rhs, d.h. vergleicht die Anzahl der Ticks für den gemeinsamen Typ beider Dauerobjekte.
7) Vergleicht lhs mit rhs, d.h. vergleicht die Anzahl der Ticks für den gemeinsamen Typ beider Dauerobjekte. Der Rückgabetyp wird aus CT(lhs).count() <=> CT(rhs).count() abgeleitet.

Der Operator != wird aus operator== synthetisiert.

(seit C++20)

[bearbeiten] Parameter

lhs - Dauerobjekt auf der linken Seite des Operators
rhs - Zeitdauer auf der rechten Seite des Operators

[bearbeiten] Rückgabewert

1) CT(lhs).count() == CT(rhs).count()
2) !(lhs == rhs)
3) CT(lhs).count() < CT(rhs).count()
4) !(rhs < lhs)
5) rhs < lhs
6) !(lhs < rhs)
7) CT(lhs).count() <=> CT(rhs).count()

[bearbeiten] Beispiel

#include <chrono>
#include <iostream>
 
int main()
{
    constexpr auto t1 = std::chrono::seconds(2);
    constexpr auto t2 = std::chrono::milliseconds(2000);
 
    if constexpr (t1 == t2)
        std::cout << t1 << " == " << t2 << '\n';
    else
        std::cout << t1 << " != " << t2 << '\n';
 
    constexpr auto t3 = std::chrono::seconds(61);
    constexpr auto t4 = std::chrono::minutes(1);
 
    if constexpr (t3 > t4)
        std::cout << t3 << " > " << t4 << '\n';
    else
        std::cout << t3 << " <= " << t4 << '\n';
 
    using namespace std::chrono_literals;
 
    static_assert(1h == 60min);
    static_assert(1min == 60s);
    static_assert(1s == 1'000ms);
    static_assert(1ms == 1'000us);
    static_assert(1us == 1'000ns);
}

Ausgabe

2s == 2000ms
61s > 1min