1eb8650a7SLouis Dionne //===----------------------------------------------------------------------===//
2e7d746d8SHoward Hinnant //
357b08b09SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
457b08b09SChandler Carruth // See https://llvm.org/LICENSE.txt for license information.
557b08b09SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6e7d746d8SHoward Hinnant //
7e7d746d8SHoward Hinnant //===----------------------------------------------------------------------===//
8e7d746d8SHoward Hinnant 
9*bbb0f2c7SArthur O'Dwyer #include <__availability>
10*bbb0f2c7SArthur O'Dwyer #include <optional>
11e7d746d8SHoward Hinnant 
12a9e65961SEric Fiselier namespace std
13a9e65961SEric Fiselier {
14fc647db3SEric Fiselier 
155601305fSLouis Dionne bad_optional_access::~bad_optional_access() noexcept = default;
16e29b1ed5SMarshall Clow 
what() const175601305fSLouis Dionne const char* bad_optional_access::what() const noexcept {
18e29b1ed5SMarshall Clow   return "bad_optional_access";
19e29b1ed5SMarshall Clow   }
20e7d746d8SHoward Hinnant 
21a9e65961SEric Fiselier } // std
22a9e65961SEric Fiselier 
23b87adec4SMarshall Clow 
24b87adec4SMarshall Clow #include <experimental/__config>
25b87adec4SMarshall Clow 
26b87adec4SMarshall Clow //  Preserve std::experimental::bad_optional_access for ABI compatibility
27b87adec4SMarshall Clow //  Even though it no longer exists in a header file
28b87adec4SMarshall Clow _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL
29b87adec4SMarshall Clow 
30b87adec4SMarshall Clow class _LIBCPP_EXCEPTION_ABI _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS bad_optional_access
31b87adec4SMarshall Clow     : public std::logic_error
32b87adec4SMarshall Clow {
33b87adec4SMarshall Clow public:
bad_optional_access()34b87adec4SMarshall Clow 	bad_optional_access() : std::logic_error("Bad optional Access") {}
35b87adec4SMarshall Clow 
36b87adec4SMarshall Clow //	Get the key function ~bad_optional_access() into the dylib
375601305fSLouis Dionne     virtual ~bad_optional_access() noexcept;
38b87adec4SMarshall Clow };
39b87adec4SMarshall Clow 
405601305fSLouis Dionne bad_optional_access::~bad_optional_access() noexcept = default;
41b87adec4SMarshall Clow 
42b87adec4SMarshall Clow _LIBCPP_END_NAMESPACE_EXPERIMENTAL
43