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().
*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) |
|
[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
См. также
|
(C++17) | считывает значение варианта, заданного индексом или типом (если тип уникален), выбрасывает исключение при ошибке (шаблон функции) |
|
(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