From 1b8579527a64cb6fd35a4da0dc56f09b24b325cd Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Wed, 10 Jun 2015 10:42:37 +0100 Subject: [PATCH] backport: re PR libstdc++/64650 (std::experimental::bad_optional_access is not default constructible) Backport from mainline 2015-01-20 Jonathan Wakely PR libstdc++/64650 * include/experimental/optional (bad_optional_access): Add default constructor. * testsuite/experimental/optional/requirements.cc: Test for default constructor. From-SVN: r224323 --- libstdc++-v3/ChangeLog | 11 +++++++++++ libstdc++-v3/include/experimental/optional | 4 ++-- .../testsuite/experimental/optional/requirements.cc | 3 +++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 29169172b57f..7af25cbc8d48 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,14 @@ +2015-06-10 Jonathan Wakely + + Backport from mainline + 2015-01-20 Jonathan Wakely + + PR libstdc++/64650 + * include/experimental/optional (bad_optional_access): Add default + constructor. + * testsuite/experimental/optional/requirements.cc: Test for default + constructor. + 2015-06-08 Jonathan Wakely Backported from mainline diff --git a/libstdc++-v3/include/experimental/optional b/libstdc++-v3/include/experimental/optional index 2a3f29dcd70f..3e73f847d0ed 100644 --- a/libstdc++-v3/include/experimental/optional +++ b/libstdc++-v3/include/experimental/optional @@ -106,9 +106,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION class bad_optional_access : public logic_error { public: - // XXX Should not be inline - explicit bad_optional_access(const string& __arg) : logic_error(__arg) { } + bad_optional_access() : logic_error("bad optional access") { } + // XXX This constructor is non-standard. Should not be inline explicit bad_optional_access(const char* __arg) : logic_error(__arg) { } virtual ~bad_optional_access() noexcept = default; diff --git a/libstdc++-v3/testsuite/experimental/optional/requirements.cc b/libstdc++-v3/testsuite/experimental/optional/requirements.cc index 4b0535b47093..0ba8e970099b 100644 --- a/libstdc++-v3/testsuite/experimental/optional/requirements.cc +++ b/libstdc++-v3/testsuite/experimental/optional/requirements.cc @@ -23,6 +23,9 @@ #include +using std::experimental::bad_optional_access; +static_assert( std::is_default_constructible::value, "" ); + struct trivially_destructible { trivially_destructible() = delete; -- 2.47.2