summaryrefslogtreecommitdiffstats
path: root/lib/libcxx/src/optional.cpp
diff options
context:
space:
mode:
authorpatrick <patrick@openbsd.org>2019-02-04 16:55:44 +0000
committerpatrick <patrick@openbsd.org>2019-02-04 16:55:44 +0000
commit76c648e7a477ffb2a882ad5ffe523269bd9a3f6a (patch)
tree29d319d598650bab04e4f58e5e8769567e33091e /lib/libcxx/src/optional.cpp
parentImport libc++abi 7.0.1. (diff)
downloadwireguard-openbsd-76c648e7a477ffb2a882ad5ffe523269bd9a3f6a.tar.xz
wireguard-openbsd-76c648e7a477ffb2a882ad5ffe523269bd9a3f6a.zip
Import libc++ 7.0.1.
Diffstat (limited to 'lib/libcxx/src/optional.cpp')
-rw-r--r--lib/libcxx/src/optional.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/lib/libcxx/src/optional.cpp b/lib/libcxx/src/optional.cpp
index 2877d175bc1..6099b6b41e8 100644
--- a/lib/libcxx/src/optional.cpp
+++ b/lib/libcxx/src/optional.cpp
@@ -8,7 +8,6 @@
//===----------------------------------------------------------------------===//
#include "optional"
-#include "experimental/optional"
namespace std
{
@@ -21,8 +20,23 @@ const char* bad_optional_access::what() const _NOEXCEPT {
} // std
+
+#include <experimental/__config>
+
+// Preserve std::experimental::bad_optional_access for ABI compatibility
+// Even though it no longer exists in a header file
_LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL
+class _LIBCPP_EXCEPTION_ABI _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS bad_optional_access
+ : public std::logic_error
+{
+public:
+ bad_optional_access() : std::logic_error("Bad optional Access") {}
+
+// Get the key function ~bad_optional_access() into the dylib
+ virtual ~bad_optional_access() _NOEXCEPT;
+};
+
bad_optional_access::~bad_optional_access() _NOEXCEPT = default;
_LIBCPP_END_NAMESPACE_EXPERIMENTAL