[expected.bad] # 22 General utilities library [[utilities]](./#utilities) ## 22.8 Expected objects [[expected]](expected#bad) ### 22.8.4 Class template bad_expected_access [expected.bad] [🔗](#lib:bad_expected_access) namespace std {templateclass bad_expected_access : public bad_expected_access {public:constexpr explicit bad_expected_access(E); constexpr const char* what() const noexcept override; constexpr E& error() & noexcept; constexpr const E& error() const & noexcept; constexpr E&& error() && noexcept; constexpr const E&& error() const && noexcept; private: E *unex*; // *exposition only*};} [1](#1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/utilities.tex#L7918) The class template bad_expected_access defines the type of objects thrown as exceptions to report the situation where an attempt is made to access the value of an expected object for which has_value() is false[.](#1.sentence-1) [🔗](#lib:bad_expected_access,constructor) `constexpr explicit bad_expected_access(E e); ` [2](#2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/utilities.tex#L7930) *Effects*: Initializes *unex* with std​::​move(e)[.](#2.sentence-1) [🔗](#lib:error,bad_expected_access) `constexpr const E& error() const & noexcept; constexpr E& error() & noexcept; ` [3](#3) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/utilities.tex#L7942) *Returns*: *unex*[.](#3.sentence-1) [🔗](#lib:error,bad_expected_access_) `constexpr E&& error() && noexcept; constexpr const E&& error() const && noexcept; ` [4](#4) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/utilities.tex#L7954) *Returns*: std​::​move(*unex*)[.](#4.sentence-1) [🔗](#lib:what,bad_expected_access) `constexpr const char* what() const noexcept override; ` [5](#5) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/utilities.tex#L7965) *Returns*: An implementation-defined ntbs, which during constant evaluation is encoded with the ordinary literal encoding ([[lex.ccon]](lex.ccon "5.13.3 Character literals"))[.](#5.sentence-1)