diff --git a/include/boost/smart_ptr/weak_ptr.hpp b/include/boost/smart_ptr/weak_ptr.hpp index d3735410f3..80a103ae2d 100644 --- a/include/boost/smart_ptr/weak_ptr.hpp +++ b/include/boost/smart_ptr/weak_ptr.hpp @@ -15,7 +15,6 @@ #include #include -#include #include #include @@ -33,18 +32,18 @@ template class weak_ptr typedef typename boost::detail::sp_element< T >::type element_type; - BOOST_CONSTEXPR weak_ptr() BOOST_SP_NOEXCEPT : px(0), pn() + BOOST_CONSTEXPR weak_ptr() noexcept : px(0), pn() { } // generated copy constructor, assignment, destructor are fine... // ... except in C++0x, move disables the implicit copy - weak_ptr( weak_ptr const & r ) BOOST_SP_NOEXCEPT : px( r.px ), pn( r.pn ) + weak_ptr( weak_ptr const & r ) noexcept : px( r.px ), pn( r.pn ) { } - weak_ptr & operator=( weak_ptr const & r ) BOOST_SP_NOEXCEPT + weak_ptr & operator=( weak_ptr const & r ) noexcept { px = r.px; pn = r.pn; @@ -70,14 +69,14 @@ template class weak_ptr template weak_ptr( weak_ptr const & r, typename boost::detail::sp_enable_if_convertible::type = boost::detail::sp_empty() ) - BOOST_SP_NOEXCEPT : px(r.lock().get()), pn(r.pn) + noexcept : px(r.lock().get()), pn(r.pn) { boost::detail::sp_assert_convertible< Y, T >(); } template weak_ptr( weak_ptr && r, typename boost::detail::sp_enable_if_convertible::type = boost::detail::sp_empty() ) - BOOST_SP_NOEXCEPT : px( r.lock().get() ), pn( static_cast< boost::detail::weak_count && >( r.pn ) ) + noexcept : px( r.lock().get() ), pn( static_cast< boost::detail::weak_count && >( r.pn ) ) { boost::detail::sp_assert_convertible< Y, T >(); r.px = 0; @@ -85,13 +84,13 @@ template class weak_ptr // for better efficiency in the T == Y case weak_ptr( weak_ptr && r ) - BOOST_SP_NOEXCEPT : px( r.px ), pn( static_cast< boost::detail::weak_count && >( r.pn ) ) + noexcept : px( r.px ), pn( static_cast< boost::detail::weak_count && >( r.pn ) ) { r.px = 0; } // for better efficiency in the T == Y case - weak_ptr & operator=( weak_ptr && r ) BOOST_SP_NOEXCEPT + weak_ptr & operator=( weak_ptr && r ) noexcept { this_type( static_cast< weak_ptr && >( r ) ).swap( *this ); return *this; @@ -100,26 +99,26 @@ template class weak_ptr template weak_ptr( shared_ptr const & r, typename boost::detail::sp_enable_if_convertible::type = boost::detail::sp_empty() ) - BOOST_SP_NOEXCEPT : px( r.px ), pn( r.pn ) + noexcept : px( r.px ), pn( r.pn ) { boost::detail::sp_assert_convertible< Y, T >(); } // aliasing - template weak_ptr(shared_ptr const & r, element_type * p) BOOST_SP_NOEXCEPT: px( p ), pn( r.pn ) + template weak_ptr(shared_ptr const & r, element_type * p) noexcept: px( p ), pn( r.pn ) { } - template weak_ptr(weak_ptr const & r, element_type * p) BOOST_SP_NOEXCEPT: px( p ), pn( r.pn ) + template weak_ptr(weak_ptr const & r, element_type * p) noexcept: px( p ), pn( r.pn ) { } - template weak_ptr(weak_ptr && r, element_type * p) BOOST_SP_NOEXCEPT: px( p ), pn( std::move( r.pn ) ) + template weak_ptr(weak_ptr && r, element_type * p) noexcept: px( p ), pn( std::move( r.pn ) ) { } template - weak_ptr & operator=( weak_ptr const & r ) BOOST_SP_NOEXCEPT + weak_ptr & operator=( weak_ptr const & r ) noexcept { boost::detail::sp_assert_convertible< Y, T >(); @@ -130,14 +129,14 @@ template class weak_ptr } template - weak_ptr & operator=( weak_ptr && r ) BOOST_SP_NOEXCEPT + weak_ptr & operator=( weak_ptr && r ) noexcept { this_type( static_cast< weak_ptr && >( r ) ).swap( *this ); return *this; } template - weak_ptr & operator=( shared_ptr const & r ) BOOST_SP_NOEXCEPT + weak_ptr & operator=( shared_ptr const & r ) noexcept { boost::detail::sp_assert_convertible< Y, T >(); @@ -147,63 +146,63 @@ template class weak_ptr return *this; } - shared_ptr lock() const BOOST_SP_NOEXCEPT + shared_ptr lock() const noexcept { return shared_ptr( *this, boost::detail::sp_nothrow_tag() ); } - long use_count() const BOOST_SP_NOEXCEPT + long use_count() const noexcept { return pn.use_count(); } - bool expired() const BOOST_SP_NOEXCEPT + bool expired() const noexcept { return pn.use_count() == 0; } - bool _empty() const BOOST_SP_NOEXCEPT // extension, not in std::weak_ptr + bool _empty() const noexcept // extension, not in std::weak_ptr { return pn.empty(); } - bool empty() const BOOST_SP_NOEXCEPT // extension, not in std::weak_ptr + bool empty() const noexcept // extension, not in std::weak_ptr { return pn.empty(); } - void reset() BOOST_SP_NOEXCEPT + void reset() noexcept { this_type().swap(*this); } - void swap(this_type & other) BOOST_SP_NOEXCEPT + void swap(this_type & other) noexcept { std::swap(px, other.px); pn.swap(other.pn); } - template bool owner_before( weak_ptr const & rhs ) const BOOST_SP_NOEXCEPT + template bool owner_before( weak_ptr const & rhs ) const noexcept { return pn < rhs.pn; } - template bool owner_before( shared_ptr const & rhs ) const BOOST_SP_NOEXCEPT + template bool owner_before( shared_ptr const & rhs ) const noexcept { return pn < rhs.pn; } - template bool owner_equals( weak_ptr const & rhs ) const BOOST_SP_NOEXCEPT + template bool owner_equals( weak_ptr const & rhs ) const noexcept { return pn == rhs.pn; } - template bool owner_equals( shared_ptr const & rhs ) const BOOST_SP_NOEXCEPT + template bool owner_equals( shared_ptr const & rhs ) const noexcept { return pn == rhs.pn; } - std::size_t owner_hash_value() const BOOST_SP_NOEXCEPT + std::size_t owner_hash_value() const noexcept { return pn.hash_value(); } @@ -218,12 +217,12 @@ template class weak_ptr }; // weak_ptr -template inline bool operator<(weak_ptr const & a, weak_ptr const & b) BOOST_SP_NOEXCEPT +template inline bool operator<(weak_ptr const & a, weak_ptr const & b) noexcept { return a.owner_before( b ); } -template void swap(weak_ptr & a, weak_ptr & b) BOOST_SP_NOEXCEPT +template void swap(weak_ptr & a, weak_ptr & b) noexcept { a.swap(b); } @@ -236,7 +235,7 @@ template weak_ptr( shared_ptr ) -> weak_ptr; // hash_value -template< class T > std::size_t hash_value( boost::weak_ptr const & p ) BOOST_SP_NOEXCEPT +template< class T > std::size_t hash_value( boost::weak_ptr const & p ) noexcept { return p.owner_hash_value(); } @@ -250,7 +249,7 @@ namespace std template struct hash< ::boost::weak_ptr > { - std::size_t operator()( ::boost::weak_ptr const & p ) const BOOST_SP_NOEXCEPT + std::size_t operator()( ::boost::weak_ptr const & p ) const noexcept { return p.owner_hash_value(); } @@ -258,7 +257,7 @@ template struct hash< ::boost::weak_ptr > template struct equal_to< ::boost::weak_ptr > { - bool operator()( ::boost::weak_ptr const & a, ::boost::weak_ptr const & b ) const BOOST_SP_NOEXCEPT + bool operator()( ::boost::weak_ptr const & a, ::boost::weak_ptr const & b ) const noexcept { return a.owner_equals( b ); }