// Copyright 2017, 2021, 2022, 2026 Peter Dimov. // Distributed under the Boost Software License, Version 1.0. // https://www.boost.org/LICENSE_1_0.txt #define BOOST_ENABLE_ASSERT_HANDLER #include #include struct assertion_failure { }; namespace boost { void assertion_failed( char const* /*expr*/, char const* /*function*/, char const* /*file*/, long /*line*/ ) { throw assertion_failure(); } } // namespace boost using namespace boost::system; struct X { int v_; explicit X( int v ): v_( v ) {} X( X const& ) = delete; X& operator=( X const& ) = delete; }; int main() { { auto ec = make_error_code( errc::invalid_argument ); result r( ec ); BOOST_TEST( !r.has_value() ); BOOST_TEST_THROWS( r.unsafe_value(), assertion_failure ); } { auto ec = make_error_code( errc::invalid_argument ); result const r( ec ); BOOST_TEST( !r.has_value() ); BOOST_TEST_THROWS( r.unsafe_value(), assertion_failure ); } { auto ec = make_error_code( errc::invalid_argument ); BOOST_TEST( !result( ec ).has_value() ); BOOST_TEST_THROWS( result( ec ).unsafe_value(), assertion_failure ); } // { auto ec = make_error_code( errc::invalid_argument ); result r( ec ); BOOST_TEST( !r.has_value() ); BOOST_TEST_THROWS( r.unsafe_value(), assertion_failure ); } { auto ec = make_error_code( errc::invalid_argument ); result const r( ec ); BOOST_TEST( !r.has_value() ); BOOST_TEST_THROWS( r.unsafe_value(), assertion_failure ); } { auto ec = make_error_code( errc::invalid_argument ); BOOST_TEST(( !result( ec ).has_value() )); BOOST_TEST_THROWS( (result( ec ).unsafe_value()), assertion_failure ); } // { auto ec = make_error_code( errc::invalid_argument ); result r( ec ); BOOST_TEST( !r.has_value() ); BOOST_TEST_THROWS( r.unsafe_value(), assertion_failure ); } { auto ec = make_error_code( errc::invalid_argument ); result const r( ec ); BOOST_TEST( !r.has_value() ); BOOST_TEST_THROWS( r.unsafe_value(), assertion_failure ); } { auto ec = make_error_code( errc::invalid_argument ); BOOST_TEST( !result( ec ).has_value() ); BOOST_TEST_THROWS( result( ec ).unsafe_value(), assertion_failure ); } // { auto ec = make_error_code( errc::invalid_argument ); result r( ec ); BOOST_TEST( !r.has_value() ); BOOST_TEST_THROWS( r.unsafe_value(), assertion_failure ); } { auto ec = make_error_code( errc::invalid_argument ); result const r( ec ); BOOST_TEST( !r.has_value() ); BOOST_TEST_THROWS( r.unsafe_value(), assertion_failure ); } { auto ec = make_error_code( errc::invalid_argument ); BOOST_TEST( !result( ec ).has_value() ); BOOST_TEST_THROWS( result( ec ).unsafe_value(), assertion_failure ); } // return boost::report_errors(); }