std::chrono...t_local_time(3)

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

okay bestie, this is std::chrono...t_local_time(3) from the C++ Standard Libary manual β€” the whole vibe is std::chrono::nonexistent_local_time, and we’re about to understand it fr fr πŸ•°οΈβœ¨

πŸ’– NAME πŸ’–

std::chrono::nonexistent_local_time β€” std::chrono::nonexistent_local_time

🌸 Synopsis 🌸

Defined in header <chrono>:

class nonexistent_local_time;  (since C++20)

Defines a type of object to be thrown as exception to report that an attempt was made to convert a nonexistent std::chrono::local_time to a std::chrono::sys_time without specifying a std::chrono::choose (such as choose::earliest or choose::latest). iykyk πŸ’…

This exception is thrown by std::chrono::time_zone::to_sys and functions that call it (such as the constructors of std::chrono::zoned_time that take a std::chrono::local_time). slay, chrono internals, slay ✨

Inheritance diagram β€” file: std-chrono-nonexistent local time-inheritance.svg 🧬

πŸŽ€ Member functions πŸŽ€

  • constructor β€” constructs the exception object (public member function)
  • operator= β€” replaces the exception object (public member function)
  • what β€” returns the explanatory string (public member function)

✨ std::chrono::nonexistent_local_time::nonexistent_local_time ✨

template< class Duration >
nonexistent_local_time( const std::chrono::local_time<Duration>& tp,
                        const std::chrono::local_info& i );

(1) (since C++20)

nonexistent_local_time( const nonexistent_local_time& other ) noexcept;

(2) (since C++20)

Constructs the exception object. main character constructor behavior, honestly 🫢

  1. The explanatory string returned by what() is equivalent to that produced by os.str() after the following code:
std::ostringstream os;
os << tp << " is in a gap between\n"
   << std::chrono::local_seconds(i.first.end.time_since_epoch()) +
i.first.offset
   << ' ' << i.first.abbrev << " and\n"
   << std::chrono::local_seconds(i.second.begin.time_since_epoch()) +
i.second.offset
   << ' ' << i.second.abbrev
   << " which are both equivalent to\n"
   << i.first.end << " UTC";
⚠️ The behavior is undefined if i.result != std::chrono::local_info::nonexistent. do not play with undefined behavior, bestie, that’s not the vibe πŸ’€
  1. Copy constructor. If *this and other both have dynamic type std::chrono::nonexistent_local_time then std::strcmp(what(), other.what()) == 0.

🫢 Parameters 🫢

  • tp β€” the time point for which conversion was attempted
  • i β€” a std::chrono::local_info describing the result of the conversion attempt
  • other β€” another nonexistent_local_time to copy

😭 Exceptions 😭

May throw std::bad_alloc allocation said β€œnot today” 😭

πŸ’… Notes πŸ’…

Because copying a standard library class derived from std::exception is not permitted to throw exceptions, this message is typically stored internally as a separately-allocated reference-counted string. lowkey iconic implementation lore ✨

πŸ‘‘ std::chrono::nonexistent_locale_time::operator= πŸ‘‘

(the page spells it nonexistent_locale_time here, and we’re keeping that spelling exactly as-is β€” no cap πŸ‘€)

nonexistent_locale_time& operator=( const nonexistent_locale_time& other ) noexcept;

(since C++20)

Assigns the contents with those of other. If *this and other both have dynamic type std::chrono::nonexistent_locale_time then std::strcmp(what(), other.what()) == 0 after assignment.

🫢 Parameters 🫢

  • other β€” another exception object to assign with

πŸ’« Return value πŸ’«

*this

🌈 std::chrono::nonexistent_locale_time::what 🌈

virtual const char* what() const noexcept;

(since C++20)

Returns the explanatory string. the people’s explanatory string, honestly πŸ’…

🫢 Parameters 🫢

(none)

πŸ’« Return value πŸ’«

Pointer to a null-terminated string with explanatory information. The string is suitable for conversion and display as a std::wstring. The pointer is guaranteed to be valid at least until the exception object from which it is obtained is destroyed, or until a non-const member function (e.g. copy assignment operator) on the exception object is called.

πŸ’… Notes πŸ’…

Implementations are allowed but not required to override what(). allowed but not required: the most chill sentence in the whole standard πŸ¦‹

🌟 Inherited from std::runtime_error 🌟

🌟 Inherited from std::exception 🌟

πŸŽ€ Member functions πŸŽ€

  • destructor β€” destroys the exception object [virtual] (virtual public member function of std::exception)
  • what β€” returns an explanatory string [virtual] (virtual public member function of std::exception)

πŸ¦‹ See also πŸ¦‹

  • ambiguous_local_time β€” exception thrown to report that a local time is ambiguous (C++20) (class)

that’s the whole page, bestie β€” source: http://cppreference.com, version/date: 2024.06.10. go be the main character of your own timezone conversion, mwah πŸ’‹πŸ‘‘

πŸ“¦ where this page comes from