std::chrono::last_spec, std::chrono::last

From cppreference.com
< cpp‎ | chrono
 
 
Utilities library
General utilities
Relational operators (deprecated in C++20)
 
Date and time utilities
Time point
(C++11)
(C++20)
Duration
(C++11)
Clocks
(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)
last_speclast
(C++20)(C++20)
Time zone
(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>
struct last_spec

{
    explicit last_spec() = default;

};
(since C++20)
inline constexpr last_spec last{};
(since C++20)

last_spec is an empty tag type that is used in conjunction with other calendar types to indicate the last thing in a sequence. Depending on context, it may indicate the last day of a month (as in 2018y/February/last, for last day of February 2018, i.e., 2018-02-28) or the last day of the week in a month (as in 2018/February/Sunday[last], for last Sunday of February 2018, i.e., 2018-02-25).

Example

#include <chrono>
 
int main()
{
    using namespace std::chrono;
 
    constexpr auto mdl {June/last};
    static_assert(mdl == month_day_last(month(6)));
 
    constexpr auto ymwdl {year(2023)/December/Tuesday[last]};
    static_assert(ymwdl ==
        year_month_weekday_last(year(2023), month(12), weekday_last(Tuesday)));
}