|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Observers | ||||
| Iterators | ||||
(C++26) | ||||
(C++26) | ||||
| Monadic operations | ||||
(C++23) | ||||
(C++23) | ||||
(C++23) | ||||
| Modifiers | ||||
| Non-member functions | ||||
| Deduction guides | ||||
| Helper classes | ||||
bad_optional_access | ||||
| Helper objects | ||||
Defined in header <optional> | ||
class bad_optional_access:publicstd::exception | (since C++17) | |
Defines a type of object to be thrown bystd::optional::value when accessing an optional object that does not contain a value.
All member functions ofstd::bad_optional_access areconstexpr: it is possible to create and usestd::bad_optional_access objects in the evaluation of a constant expression.However, | (since C++26) |
Inheritance diagram
Contents |
(constructor) | constructs a newbad_optional_access object(public member function) |
operator= | replaces thebad_optional_access object(public member function) |
what | returns the explanatory string (public member function) |
bad_optional_access()noexcept; | (1) | (since C++17) (constexpr since C++26) |
bad_optional_access(const bad_optional_access& other)noexcept; | (2) | (since C++17) (constexpr since C++26) |
Constructs a newbad_optional_access object with an implementation-defined null-terminated byte string which is accessible throughwhat().
std::bad_optional_access thenstd::strcmp(what(), other.what())==0.| other | - | another exception object to copy |
bad_optional_access& operator=(const bad_optional_access& other)noexcept; | (since C++17) (constexpr since C++26) | |
Assigns the contents with those ofother. If*this andother both have dynamic typestd::bad_optional_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_optional_access |
#include <iostream>#include <optional> int main(){std::optional<int> opt;// creates an empty optionaltry{[[maybe_unused]]auto x= opt.value();// throws}catch(const std::bad_optional_access& ex){std::cout<< ex.what()<<'\n';}}
Possible output:
bad optional access
(C++23) | exception indicating checked access to anexpected that contains an unexpected value(class template)[edit] |
(C++17) | exception thrown on invalid accesses to the value of avariant(class)[edit] |