Spec-Zone.ru › C++

std::bad_any_cast

Определён в заголовочном файле <any>
class bad_any_cast : public std::bad_cast;
(с C++17)

Определяет тип объекта, выбрасываемого формами std::any_cast, возвращающими значение, в случае ошибки.

Функции-члены

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

std::bad_any_cast::bad_any_cast

bad_any_cast() noexcept;
(1) (с C++17)
bad_any_cast( const bad_any_cast& other ) noexcept;
(2) (с C++17)

Создаёт новый объект bad_any_cast с строкой байтов с завершающим нулём, определяемой реализацией и доступной через what().

1) Конструктор по умолчанию.
2) Конструктор копирования. Если *this и other имеют динамический тип std::bad_any_cast, то std::strcmp(what(), other.what()) == 0.

Параметры

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

std::bad_any_cast::operator=

bad_any_cast& operator=( const bad_any_cast& other ) noexcept;
(с C++17)

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

Параметры

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

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

*this

std::bad_any_cast::what

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

Возвращает поясняющую строку.

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

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

При вычислении константного выражения возвращаемая строка кодируется с использованием обычной кодировки литералов.

(с C++26)

Примечания

Реализации могут переопределять what(), но не обязаны этого делать.

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

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

Функции-члены

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

Пример

#include <any>
#include <cassert>
#include <print>

int main()
{
    auto x = std::any(42);
    assert(std::any_cast<int>(x) == 42); // OK

    try
    {
        [[maybe_unused]] auto s = std::any_cast<std::string>(x); // throws
    }
    catch (const std::bad_any_cast& ex)
    {
        std::println("{}", ex.what());
    }
}

Возможный вывод:

bad any_cast

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/utility/any/bad_any_cast

Spec-Zone.ru

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