std::litera...:operator""y(3)

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

πŸ’… std::litera...:operator""y(3) πŸ’…

okay so bestie, welcome to the C++ Standard Libary manual page for std::litera...:operator""y(3). yes, we are literally doing chrono year literals, and it's highkey iconic. no cap. ✨

πŸ’– NAME πŸ’–

std::literals::chrono_literals::operator""y β€” and the NAME section is literally std::literals::chrono_literals::operator""y again. it's giving "say it twice so they remember," and honestly? slay. πŸ’…

✨ Synopsis ✨

here's the signature, bestie:

          Defined in header <chrono>
          constexpr std::chrono::year operator""y( unsigned long long y )
       (since C++20)
          noexcept;

Forms a std::chrono::year literal representing a year in the proleptic Gregorian calendar. πŸ—“οΈ

πŸŽ€ Parameters πŸŽ€

  • y β€” the year value. that's the whole parameter, no cap. 🫢

πŸ¦‹ Return value πŸ¦‹

A std::chrono::year initialized from int(y). If y is not in the range [-32767, 32767], the stored value is unspecified.

🚨 bestie, if y is outside [-32767, 32767], the stored value is unspecified β€” so don't build your whole personality on it. πŸ’€

🌸 Possible implementation 🌸

this is the possible implementation, exactly:

          constexpr std::chrono::year operator""y(unsigned long long y)
       noexcept
          {
              return std::chrono::year(static_cast<int>(y));
          }

🌈 Notes 🌈

  • this operator is declared in the namespace std::literals::chrono_literals, where both literals and chrono_literals are inline namespaces. access to this operator can be gained with:
    • using namespace std::literals β€” comma included in the original, bestie,
    • using namespace std::chrono_literals β€” comma included, or
    • using namespace std::literals::chrono_literals β€” period included.

In addition, within the namespace std::chrono, the directive using namespace literals::chrono_literals; is provided by the standard library, so that if a programmer uses using namespace std::chrono; to gain access to the classes in the chrono library, the corresponding literal operators become visible as well.

πŸŽ€ Example πŸŽ€

// Run this code

        #include <chrono>
        #include <iostream>

        int main()
        {
            using namespace std::literals;

            std::cout << int(2020y)  << '\t' << 2020y  << '\n'
                      << int(-220y)  << '\t' << -220y  << '\n'
                      << int(3000y)  << '\t' << 3000y  << '\n'
                      << int(32768y) << '\t' << 32768y << '\n'  // unspecified
                      << int(65578y) << '\t' << 65578y << '\n'; // unspecified
        }

Possible output:

        2020    2020
        -220    -0220
        3000    3000
        -32768  -32768 is not a valid year
        42      0042

πŸ‘‘ See also πŸ‘‘

  • constructor β€” constructs a year (public member function of std::chrono::year). 🫢

last but not least: this cutie came from http://cppreference.com, stamped 2024.06.10, and filed under std::litera...:operator""y(3). mwah πŸ’–

πŸ“¦ where this page comes from