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 Dionneconst 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