std::bad_variant_access
| Определено в заголовочном файле <variant>
|
||
class bad_variant_access : public std::exception |
(начиная с C++17) | |
std::bad_variant_access это тип исключения, возникающего в следующих ситуациях:
- std::get(std::variant) вызывается с индексом или типом, который не соответствует текущей активной альтернативе
- std::visit вызывается для посещения варианта, который является valueless_by_exception
Функции-элементы
(конструктор) |
создаёт новый объект bad_variant_access (public функция-элемент) |
operator= |
заменяет объект bad_variant_access (public функция-элемент) |
what |
возвращает пояснительную строку (public функция-элемент) |
std::bad_variant_access::bad_variant_access
<tbody> </tbody> 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=
<tbody> </tbody> 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
<tbody> </tbody> virtual const char* what() const noexcept; |
(начиная с C++17) | |
Возвращает пояснительную строку.
Параметры
(нет)
Возвращаемое значение
Указатель на завершающуюся нулём строку с пояснительной информацией. Строка подходит для преобразования и отображения в виде std::wstring. Указатель гарантированно действителен, по крайней мере, до тех пор, пока объект исключения, из которого он получен, не будет уничтожен или пока не будет вызвана неконстантная функция-элемент (например, оператор присваивания копированием) для объекта исключения.
Примечание
Реализации могут, но не обязаны переопределять what().
Унаследован от std::exception
Функции-элементы
[virtual] |
уничтожает объект исключения (virtual public of std::exception функция-элемент)
|
[virtual] |
возвращает поясняющую строку (virtual public of std::exception функция-элемент)
|
Пример
#include <variant>
#include <iostream>
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) |
читает значение variant по заданному индексу или типу (если тип уникален), генерирует исключение при ошибке (шаблон функции) |
(C++17) |
вызывает предоставленный функтор с аргументами, содержащимися в одном или нескольких variant’ах (шаблон функции) |