operator==,!=,<,<=,>,>=,<=>(std::chrono::duration) - cppreference.com

From cppreference.com

template<classRep1,classPeriod1,classRep2,classPeriod2>constexprbooloperator==(conststd::chrono::duration<Rep1,Period1>&lhs,conststd::chrono::duration<Rep2,Period2>&rhs); (1) (since C++11)template<classRep1,classPeriod1,classRep2,classPeriod2>constexprbooloperator!=(conststd::chrono::duration<Rep1,Period1>&lhs,conststd::chrono::duration<Rep2,Period2>&rhs); (2) (since C++11)
(until C++20)template<classRep1,classPeriod1,classRep2,classPeriod2>constexprbooloperator<(conststd::chrono::duration<Rep1,Period1>&lhs,conststd::chrono::duration<Rep2,Period2>&rhs); (3) (since C++11)template<classRep1,classPeriod1,classRep2,classPeriod2>constexprbooloperator<=(conststd::chrono::duration<Rep1,Period1>&lhs,conststd::chrono::duration<Rep2,Period2>&rhs); (4) (since C++11)template<classRep1,classPeriod1,classRep2,classPeriod2>constexprbooloperator>(conststd::chrono::duration<Rep1,Period1>&lhs,conststd::chrono::duration<Rep2,Period2>&rhs); (5) (since C++11)template<classRep1,classPeriod1,classRep2,classPeriod2>constexprbooloperator>=(conststd::chrono::duration<Rep1,Period1>&lhs,conststd::chrono::duration<Rep2,Period2>&rhs); (6) (since C++11)template<classRep1,classPeriod1,classRep2,classPeriod2>requiresstd::three_way_comparable<std::common_type_t<Rep1,Rep2>>constexprautooperator<=>(conststd::chrono::duration<Rep1,Period1>&lhs,conststd::chrono::duration<Rep2,Period2>&rhs); (7) (since C++20)Compares two durations. Let CT be std::common_type<std::chrono::duration<Rep1,Period1>,std::chrono::duration<Rep2,Period2>>::type:

1,2) Checks if lhs and rhs are equal, i.e. the number of ticks for the type common to both durations are equal.

3-6) Compares lhs to rhs, i.e. compares the number of ticks for the type common to both durations.

7) Compares lhs to rhs, i.e. compares the number of ticks for the type common to both durations. The return type is deduced from CT(lhs).count()<=>CT(rhs).count().

The != operator is

synthesized

from operator==.

(since C++20)Parameters

lhs - duration on the left-hand side of the operator rhs - duration on the right-hand side of the operator Return value

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()

Example

Run this code

#include<chrono>#include<iostream>intmain(){constexprautot1=std::chrono::seconds(2);constexprautot2=std::chrono::milliseconds(2000);ifconstexpr(t1==t2)std::cout<<t1<<" == "<<t2<<'\n';elsestd::cout<<t1<<" != "<<t2<<'\n';constexprautot3=std::chrono::seconds(61);constexprautot4=std::chrono::minutes(1);ifconstexpr(t3>t4)std::cout<<t3<<" > "<<t4<<'\n';elsestd::cout<<t3<<" <= "<<t4<<'\n';usingnamespacestd::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);}Output:

2s == 2000ms 61s > 1min