Change assertions in operator* to match documentation; improves codegen slightly in the result<U&> case

This commit is contained in:
Peter Dimov
2025-02-24 19:46:43 +02:00
parent a0597f4872
commit 7a49a5d80d

View File

@ -332,40 +332,28 @@ public:
BOOST_CXX14_CONSTEXPR T& operator*() noexcept BOOST_CXX14_CONSTEXPR T& operator*() noexcept
{ {
T* p = operator->(); BOOST_ASSERT( has_value() );
return *operator->();
BOOST_ASSERT( p != 0 );
return *p;
} }
BOOST_CXX14_CONSTEXPR T const& operator*() const noexcept BOOST_CXX14_CONSTEXPR T const& operator*() const noexcept
{ {
T const* p = operator->(); BOOST_ASSERT( has_value() );
return *operator->();
BOOST_ASSERT( p != 0 );
return *p;
} }
#else #else
BOOST_CXX14_CONSTEXPR T& operator*() & noexcept BOOST_CXX14_CONSTEXPR T& operator*() & noexcept
{ {
T* p = operator->(); BOOST_ASSERT( has_value() );
return *operator->();
BOOST_ASSERT( p != 0 );
return *p;
} }
BOOST_CXX14_CONSTEXPR T const& operator*() const & noexcept BOOST_CXX14_CONSTEXPR T const& operator*() const & noexcept
{ {
T const* p = operator->(); BOOST_ASSERT( has_value() );
return *operator->();
BOOST_ASSERT( p != 0 );
return *p;
} }
template<class U = T> template<class U = T>
@ -838,11 +826,8 @@ public:
BOOST_CXX14_CONSTEXPR U& operator*() const noexcept BOOST_CXX14_CONSTEXPR U& operator*() const noexcept
{ {
U* p = operator->(); BOOST_ASSERT( has_value() );
return *operator->();
BOOST_ASSERT( p != 0 );
return *p;
} }
// error access // error access