std::chrono::operator==,<=>(std::chrono::year_month_day_last)

From cppreference.com
Date and time library
Time point
(C++11)
(C++20)
Duration
(C++11)
Clocks
(C++11)
(C++11)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
Time of day
(C++20)(C++20)
(C++20)(C++20)
(C++20)

Calendar
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)(C++20)
Time zone
(C++20)
(C++20)
(C++20) (C++20) (C++20) (C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
chrono I/O
(C++20)
C-style date and time
Defined in header <chrono>
constexpr bool operator== ( const std::chrono::year_month_day_last & x,
const std::chrono::year_month_day_last & y ) noexcept ;
(1) (since C++20)
constexpr std::strong_ordering

operator<=> ( const std::chrono::year_month_day_last & x,

const std::chrono::year_month_day_last & y ) noexcept ;
(2) (since C++20)

Compares the two year_month_day_last values x and y. This is a lexicographical comparison: the year() is compared first, then month()

The <, <=, >, >=, and != operators are synthesized from operator<=> and operator==

Return value

1) x.year ( ) == y.year ( ) && x.month ( ) == y.month ( )
2) x.year ( ) <=> y.year ( ) ! = 0 ? x.year ( ) <=> y.year ( ) : x.month ( ) <=> y.month ( )

Notes

If both x and y represent valid dates ( x.ok ( ) && y.ok ( ) == true

Example

#include <cassert>
#include <chrono>
#include <iostream>
 
int main()
{
    auto ymdl1{11/std::chrono::last/2020};
    auto mdl{std::chrono::last/std::chrono::November};
    auto ymdl2{mdl/2020};
    assert(ymdl1 == ymdl2);
 
    ymdl1 -= std::chrono::months{2};
    ymdl2 -= std::chrono::months{1};
    assert(ymdl1 < ymdl2);
}