Spec-Zone.ru › C++

std::bad_variant_access

Определено в заголовке <variant>
class bad_variant_access : public std::exception
(с C++17)

Тип исключения, выбрасываемого в следующих ситуациях:

  • std::get(std::variant) вызывается с индексом или типом, не совпадающим с текущим альтернативным значением.
  • std::visit вызывается для посещения варианта, который valueless_by_exception.

Члены

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

std::bad_variant_access::bad_variant_access

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

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

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

Параметры

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

std::bad_variant_access::operator=

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

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

Параметры

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

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

*this

std::bad_variant_access::what

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

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

Параметры

(нет)

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

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

Примечания

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

Наследуется от std::exception

Члены

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

Пример

#include <iostream>
#include <variant>
 
int main()
{
    std::variant<int, float> v;
    v = 12;
    try
    {
        std::get<float>(v);
    }
    catch (const std::bad_variant_access& e)
    {
        std::cout << e.what() << '\n';
    }
}

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

bad_variant_access

См. также

get(std::variant)
(C++17)
считывает значение варианта, заданного индексом или типом (если тип уникален), выбрасывает исключение при ошибке
(шаблон функции)
visit
(C++17)
вызывает предоставленный функциональный объект с аргументами, содержащимися в одном или нескольких вариантах
(шаблон функции)

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

Spec-Zone.ru

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