std::chrono...rono::year)(3)

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

πŸ’– NAME πŸ’–

okay bestie, welcome to the C++ Standard Libary manual page β€” the header title is doing that truncated std::chrono...rono::year)(3) thing 😭, and the actual NAME is right here:

std::chrono::operator<<(std::chrono::year) - std::chrono::operator<<(std::chrono::year)


✨ Synopsis ✨

Defined in header <chrono> 🫢

template< class CharT, class Traits >

std::basic_ostream<CharT, Traits>&
(since C++20)

    operator<<( std::basic_ostream<CharT, Traits>& os, const
std::chrono::year& y );

So what's the vibe? It forms a std::basic_string<CharT> s consisting of the year value stored in y, formatted as a decimal number, left-padded with 0 to four digits if the result would otherwise be less than four digits. Then, if !y.ok(), append " is not a valid year" to the formatted string. Inserts that string into os. Periodt πŸ’…

Equivalent to:

return os << (y.ok() ?
    std::format(STATICALLY_WIDEN<CharT>("{:%Y}"), y) :
    std::format(STATICALLY_WIDEN<CharT>("{:%Y} is not a valid year"),
y));

where STATICALLY_WIDEN<CharT>("...") is "..." if CharT is char, and L"..." if CharT is wchar_t. 🧚


πŸŽ€ Return value πŸŽ€

It hands back os β€” that's the whole return value, no extra lore πŸ’–


🌸 Example 🌸

// Run this code

#include <chrono>
#include <iostream>

int main()
{
    constexpr std::chrono::year y1{2020}, y2{-020}, y3{98304};
    std::cout << y1 << '\n'
              << y2 << '\n'
              << y3 << '\n';
}

Possible output:

2020
-0016
-32768 is not a valid year

πŸ¦‹ See also πŸ¦‹

  • format β€” stores formatted representation of the arguments in a new string (function template) (C++20) ✨
  • std::formatter<std::chrono::year> β€” formatting support for year (class template specialization) (C++20) πŸ‘‘

sign-off from the footer, bestie: http://cppreference.com Β· 2024.06.10 Β· std::chrono...rono::year)(3) β€” byeee πŸ’…πŸŽ€

πŸ“¦ where this page comes from