Namespaces
Variants

std::chrono::weekday:: weekday

From cppreference.net
weekday ( ) = default ;
(1) (desde C++20)
constexpr explicit weekday ( unsigned wd ) noexcept ;
(2) (desde C++20)
constexpr weekday ( const std:: chrono :: sys_days & sd ) noexcept ;
(3) (desde C++20)
constexpr explicit weekday ( const std:: chrono :: local_days & ld ) noexcept ;
(4) (desde C++20)

Construye un objeto weekday .

1) El constructor por defecto deja el valor del día de la semana sin inicializar.
2) Construye un objeto weekday que contiene el valor de día de la semana wd . Si wd == 7 , el valor almacenado es 0 . Si wd > 255 , el valor almacenado es no especificado.
3) Construye un objeto weekday que representa el día de la semana al que sd corresponde. Este constructor define una conversión implícita de std::chrono::sys_days a weekday .
4) Construye un objeto weekday que representa el día de la semana al que ld corresponde, como si fuera mediante weekday ( std:: chrono :: sys_days ( ld. time_since_epoch ( ) ) ) .

Parámetros

wd - un valor de día de la semana
sd - un objeto de días del sistema
ld - un objeto de días locales

Ejemplo

#include <chrono>
#include <iomanip>
#include <iostream>
int main()
{
    constexpr std::chrono::weekday friday{5}; // utiliza la sobrecarga (2)
    static_assert(friday == std::chrono::Friday);
    for (int y{2020}; y <= 2024; ++y)
    {
        const std::chrono::year cur_year{y};
        for (int cur_month{1}; cur_month != 13; ++cur_month)
        {
            const std::chrono::year_month_day ymd{cur_year/cur_month/13};
            const std::chrono::weekday cur_weekday{std::chrono::sys_days(ymd)}; // (3)
            if (cur_weekday == friday)
                std::cout << ymd << " es " << friday << '\n';
        }
    }
}

Salida:

2020-03-13 is Fri
2020-11-13 is Fri
2021-08-13 is Fri
2022-05-13 is Fri
2023-01-13 is Fri
2023-10-13 is Fri
2024-09-13 is Fri
2024-12-13 is Fri