|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Observers | ||||
| Modifiers | ||||
| Visitation | ||||
(C++26) | ||||
| Non-member functions | ||||
| Helper classes | ||||
bad_variant_access | ||||
| Helper objects | ||||
Defined in header <variant> | ||
class bad_variant_access:publicstd::exception | (since C++17) | |
std::bad_variant_access is the type of the exception thrown in the following situations:
std::visit called to visit avariant that isvalueless_by_exception.
| (since C++26) |
All member functions ofstd::bad_variant_access areconstexpr: it is possible to create and usestd::bad_variant_access objects in the evaluation of a constant expression.However, | (since C++26) |
Contents |
(constructor) | constructs a newbad_variant_access object(public member function) |
operator= | replaces thebad_variant_access object(public member function) |
what | returns the explanatory string (public member function) |
bad_variant_access()noexcept; | (1) | (since C++17) (constexpr since C++26) |
bad_variant_access(const bad_variant_access& other)noexcept; | (2) | (since C++17) (constexpr since C++26) |
Constructs a newbad_variant_access object with an implementation-defined null-terminated byte string which is accessible throughwhat().
std::bad_variant_access thenstd::strcmp(what(), other.what())==0.| other | - | another exception object to copy |
bad_variant_access& operator=(const bad_variant_access& other)noexcept; | (since C++17) (constexpr since C++26) | |
Assigns the contents with those ofother. If*this andother both have dynamic typestd::bad_variant_access thenstd::strcmp(what(), other.what())==0 after assignment.
| other | - | another exception object to assign with |
*this
virtualconstchar* what()constnoexcept; | (since C++17) (constexpr since C++26) | |
Returns the explanatory string.
Pointer to an implementation-defined null-terminated string with explanatory information. The string is suitable for conversion and display as astd::wstring. The pointer is guaranteed to be valid at least until the exception object from which it is obtained is destroyed, or until a non-const member function (e.g. copy assignment operator) on the exception object is called.
The returned string is encoded with the ordinary literal encoding during constant evaluation. | (since C++26) |
Implementations are allowed but not required to overridewhat().
[virtual] | destroys the exception object (virtual public member function of std::exception)[edit] |
[virtual] | returns an explanatory string (virtual public member function of std::exception)[edit] |
| Feature-test macro | Value | Std | Feature |
|---|---|---|---|
__cpp_lib_constexpr_exceptions | 202502L | (C++26) | constexprstd::bad_variant_access |
#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';}}
Possible output:
bad_variant_access
(C++17) | reads the value of the variant given the index or the type (if the type is unique), throws on error (function template)[edit] |
(C++17) | calls the provided functor with the arguments held by one or morevariants(function template)[edit] |
(C++26) | calls the provided functor with the argument held by thevariant(public member function)[edit] |
(C++17) | exception indicating checked access to an optional that doesn't contain a value (class)[edit] |
(C++23) | exception indicating checked access to anexpected that contains an unexpected value(class template)[edit] |