From 208b8b69b660382eed5b1550f0ee945c614a6bb4 Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Mon, 10 Oct 2016 12:44:05 +0100 Subject: [PATCH] Add noexcept to enable_shared_from_this::weak_from_this * include/bits/shared_ptr.h (enable_shared_from_this::weak_from_this): Add noexcept. * include/bits/shared_ptr_base.h (__enable_shared_from_this::weak_from_this): Likewise. * testsuite/20_util/enable_shared_from_this/members/weak_from_this.cc: Test exception-specification of weak_from_this. From-SVN: r240917 --- libstdc++-v3/ChangeLog | 9 +++++++++ libstdc++-v3/include/bits/shared_ptr.h | 4 ++-- libstdc++-v3/include/bits/shared_ptr_base.h | 4 ++-- .../20_util/enable_shared_from_this/members/weak_from_this.cc | 3 +++ 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 187c59e..1105afd 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,12 @@ +2016-10-10 Jonathan Wakely + + * include/bits/shared_ptr.h (enable_shared_from_this::weak_from_this): + Add noexcept. + * include/bits/shared_ptr_base.h + (__enable_shared_from_this::weak_from_this): Likewise. + * testsuite/20_util/enable_shared_from_this/members/weak_from_this.cc: + Test exception-specification of weak_from_this. + 2016-10-07 Jonathan Wakely * doc/xml/manual/status_cxx1998.xml: Improve documentation of diff --git a/libstdc++-v3/include/bits/shared_ptr.h b/libstdc++-v3/include/bits/shared_ptr.h index b2523b8..cbcb3b3 100644 --- a/libstdc++-v3/include/bits/shared_ptr.h +++ b/libstdc++-v3/include/bits/shared_ptr.h @@ -593,11 +593,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11 #define __cpp_lib_enable_shared_from_this 201603 weak_ptr<_Tp> - weak_from_this() + weak_from_this() noexcept { return this->_M_weak_this; } weak_ptr - weak_from_this() const + weak_from_this() const noexcept { return this->_M_weak_this; } #endif diff --git a/libstdc++-v3/include/bits/shared_ptr_base.h b/libstdc++-v3/include/bits/shared_ptr_base.h index 4ae2668..e8820a1 100644 --- a/libstdc++-v3/include/bits/shared_ptr_base.h +++ b/libstdc++-v3/include/bits/shared_ptr_base.h @@ -1562,11 +1562,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11 __weak_ptr<_Tp, _Lp> - weak_from_this() + weak_from_this() noexcept { return this->_M_weak_this; } __weak_ptr - weak_from_this() const + weak_from_this() const noexcept { return this->_M_weak_this; } #endif diff --git a/libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/weak_from_this.cc b/libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/weak_from_this.cc index b5ebb81..9c33396 100644 --- a/libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/weak_from_this.cc +++ b/libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/weak_from_this.cc @@ -26,6 +26,9 @@ struct X : public std::enable_shared_from_this { }; +static_assert( noexcept(std::declval().weak_from_this()) ); +static_assert( noexcept(std::declval().weak_from_this()) ); + void test01() { -- 2.7.4