operator==,!=,<,<=,>,>=,<=>(std::chrono::duration)
來自 cppreference.com
template< class Rep1, class Period1, class Rep2, class Period2 > constexpr bool operator==( const std::chrono::duration<Rep1, Period1>& lhs, |
(1) | (C++11 起) |
template< class Rep1, class Period1, class Rep2, class Period2 > constexpr bool operator!=( const std::chrono::duration<Rep1, Period1>& lhs, |
(2) | (C++11 起) (C++20 前) |
template< class Rep1, class Period1, class Rep2, class Period2 > constexpr bool operator<( const std::chrono::duration<Rep1, Period1>& lhs, |
(3) | (C++11 起) |
template< class Rep1, class Period1, class Rep2, class Period2 > constexpr bool operator<=( const std::chrono::duration<Rep1, Period1>& lhs, |
(4) | (C++11 起) |
template< class Rep1, class Period1, class Rep2, class Period2 > constexpr bool operator>( const std::chrono::duration<Rep1, Period1>& lhs, |
(5) | (C++11 起) |
template< class Rep1, class Period1, class Rep2, class Period2 > constexpr bool operator>=( const std::chrono::duration<Rep1, Period1>& lhs, |
(6) | (C++11 起) |
template< class Rep1, class Period1, class Rep2, class Period2 > requires std::three_way_comparable<std::common_type_t<Rep1, Rep2>> |
(7) | (C++20 起) |
比較兩個時長。令 CT
為 std::common_type<std::chrono::duration<Rep1, Period1>, std::chrono::duration<Rep2, Period2>>::type
1,2) 檢查 lhs 和 rhs 是否相等,即兩種時長共同型別的計時次數是否相等。
3-6) 比較 lhs 和 rhs,即比較兩種時長共同型別的計時次數。
7) 比較 lhs 和 rhs,即比較兩種時長共同型別的計時次數。返回型別從 CT(lhs).count() <=> CT(rhs).count() 推導。
|
(C++20 起) |
[編輯] 引數
lhs | - | 運算子左側的時長 |
rhs | - | 運算子右側的時長 |
[編輯] 返回值
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()
[編輯] 示例
執行此程式碼
#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); }
輸出
2s == 2000ms 61s > 1min