std::chrono...torsys_days,(3)

πŸ“¦ version 2024.07.05, in nixpkgs unstable, opensuse-leap 16.0

okay bestie, welcome to the std::chrono...torsys_days,(3) page from the C++ Standard Libary manual (that Libary spelling is literally in the header, not me πŸ’€). It's giving very specific chrono operator energy, and we're gonna get through it together.

πŸ’– NAME πŸ’–

The NAME section is serving maximum keyboard-mash realness. It lists the thing like this, comma-hyphen situation and all:

std::chrono::year_month_weekday_last::operatorsys_days, -
std::chrono::year_month_weekday_last::operatorsys_days,

✨ Synopsis ✨

Two conversion operators, both constexpr and noexcept, with (2) being explicit. Here's the exact signature tea:

constexpr operator std::chrono::sys_days() const noexcept;

(1) (since C++20)

constexpr explicit operator std::chrono::local_days() const noexcept;

(2) (since C++20)

Okay so what are they doing? They convert *this to a std::chrono::time_point representing the same date as this year_month_weekday_last. Lowkey iconic.

  1. If ok() is true, returns a sys_days that represents the last weekday() of the year() and month(). Otherwise, the returned value is unspecified. 😭
  2. Same as (1), but returns local_days instead of sys_days. Equivalent to local_days(sys_days(*this).time_since_epoch()).

πŸŽ€ Example πŸŽ€

Run this code, bestie:

// Run this code

#include <chrono>
#include <iostream>
using namespace std::chrono;

int main()
{
    constexpr auto ymwdl{Tuesday[last]/11/2021};
    static_assert(static_cast<local_days>(ymwdl) ==
                  static_cast<local_days>(November/30/2021));
    // convert from field-based to serial-based to add days
    constexpr auto sd = static_cast<sys_days>(ymwdl);
    constexpr year_month_day ymd{sd + days(42)};
    std::cout << ymd << '\n';
}

⭐ Output ⭐

2022-01-11

πŸ’– that's the whole page, bestie. source/version footer tea: http://cppreference.com Β· 2024.06.10 Β· std::chrono...torsys_days,(3). periodt. 🫢

πŸ“¦ where this page comes from