Namespaces
Variants

std:: bad_any_cast

From cppreference.net
Utilities library
Определено в заголовочном файле <any>
class bad_any_cast : public std:: bad_cast
(начиная с C++17)

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

Содержание

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

(constructor)
создает новый объект bad_any_cast
(public member function)
operator=
заменяет объект bad_any_cast
(public member function)
what
возвращает поясняющую строку
(public member function)

std::bad_any_cast:: bad_any_cast

bad_any_cast ( ) noexcept ;
(1) (since C++17)
bad_any_cast ( const bad_any_cast & other ) noexcept ;
(2) (since 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 ;
(since 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 . Гарантируется, что указатель остается действительным по крайней мере до тех пор, пока не будет уничтожен объект исключения, из которого он получен, или пока не будет вызвана неконстантная функция-член (например, оператор присваивания копированием) для объекта исключения.

Примечания

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

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

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

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

уничтожает объект исключения
(виртуальная публичная функция-член std::exception )
[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); // выбрасывает исключение
    }
    catch (const std::bad_any_cast& ex)
    {
        std::println("{}", ex.what());
    }
}

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

bad any_cast