Spec-Zone.ru › C++

std::chrono::nonexistent_local_time

Определено в заголовке <chrono>
class nonexistent_local_time;
(с C++20)

Определяет тип объекта, который будет брошен в качестве исключения для сообщения об попытке преобразования несуществующего std::chrono::local_time в std::chrono::sys_time без указания std::chrono::choose (такого как choose::earliest или choose::latest).

Это исключение выбрасывается std::chrono::time_zone::to_sys и функциями, которые его вызывают (такими как конструкторы std::chrono::zoned_time которые принимают std::chrono::local_time).

cpp/error/exception cpp/error/runtime errorstd-chrono-nonexistent local time-inheritance.svg

Схема наследования

Члены-функции

(конструктор)
создает объект исключения
(публичная функция-член)
operator=
заменяет объект исключения
(публичная функция-член)
what
возвращает строку объяснения
(публичная функция-член)

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) (с C++20)
nonexistent_local_time( const nonexistent_local_time& other ) noexcept;
(2) (с C++20)

Создает объект исключения.

1) Строка объяснения, возвращаемая what(), эквивалентна строке, созданной os.str(), после выполнения следующего кода:
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";
Поведение не определено, если i.result != std::chrono::local_info::nonexistent.
2) Конструктор копирования. Если *this и other имеют динамический тип std::chrono::nonexistent_local_time, то std::strcmp(what(), other.what()) == 0.

Параметры

tp - момент времени, для которого была предпринята попытка преобразования
i - результат попытки преобразования
other - другой объект исключения для копирования

Исключения

Возможно, будет выброшено std::bad_alloc

Примечания

Поскольку копирование стандартного класса библиотеки, производного от std::exception, не допускается с выбросом исключений, это сообщение обычно хранится внутри как отдельная строка с отсчетом ссылок.

std::chrono::nonexistent_locale_time::operator=

nonexistent_locale_time& operator=( const nonexistent_locale_time& other ) noexcept;
(с C++20)

Присваивает содержимое объекта other. Если *this и other имеют динамический тип std::chrono::nonexistent_locale_time, то std::strcmp(what(), other.what()) == 0 после присваивания.

Параметры

other - другой объект исключения, с которым нужно выполнить присваивание

Возвращаемое значение

*this

std::chrono::nonexistent_locale_time::what

virtual const char* what() const noexcept;
(с C++20)

Возвращает строку объяснения.

Параметры

(нет)

Возвращаемое значение

Указатель на строку с нулевым завершением, содержащую пояснительную информацию. Строка подходит для преобразования и отображения в std::wstring. Указатель гарантированно остается валидным по крайней мере до тех пор, пока не будет уничтожен объект исключения, из которого он получен, или пока не будет вызвана неконстантная функция-член (например, оператор присваивания копирования) объекта исключения.

Примечания

Реализации разрешено, но не требуется переопределять what().

Унаследовано от std::runtime_error

Унаследовано от std::exception

Члены-функции

(деструктор)
[virtual]
уничтожает объект исключения
(виртуальная публичная функция-член std::exception)
what
[virtual]
возвращает строку объяснения
(виртуальная публичная функция-член std::exception)

См. также

ambiguous_local_time
(C++20)
исключение, выбрасываемое для сообщения об неоднозначности локального времени
(класс)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/chrono/nonexistent_local_time

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API