diff --git a/include/boost/leaf/context.hpp b/include/boost/leaf/context.hpp index 57238f55..b28cb363 100644 --- a/include/boost/leaf/context.hpp +++ b/include/boost/leaf/context.hpp @@ -171,16 +171,6 @@ namespace leaf_detail tuple_for_each::propagate(tup, err_id); } - BOOST_LEAF_CONSTEXPR static void propagate_captured( Tuple & tup, int err_id ) noexcept - { - static_assert(!std::is_same(tup))>::type>::value, "Bug in LEAF: context type deduction"); - BOOST_LEAF_ASSERT(err_id != 0); - auto & sl = std::get(tup); - if( sl.has_value(err_id) ) - (void) load_slot(err_id, std::move(sl).value(err_id)); - tuple_for_each::propagate_captured(tup, err_id); - } - template static void print( std::basic_ostream & os, void const * tup, int key_to_print ) { @@ -196,7 +186,6 @@ namespace leaf_detail BOOST_LEAF_CONSTEXPR static void activate( Tuple & ) noexcept { } BOOST_LEAF_CONSTEXPR static void deactivate( Tuple & ) noexcept { } BOOST_LEAF_CONSTEXPR static void propagate( Tuple &, int ) noexcept { } - BOOST_LEAF_CONSTEXPR static void propagate_captured( Tuple &, int ) noexcept { } template BOOST_LEAF_CONSTEXPR static void print( std::basic_ostream &, void const *, int ) { } }; @@ -289,7 +278,7 @@ class context BOOST_LEAF_CONSTEXPR error_id propagate_captured_errors( error_id err_id ) noexcept { - leaf_detail::tuple_for_each::value,Tup>::propagate_captured(tup_, err_id.value()); + leaf_detail::tuple_for_each::value,Tup>::propagate(tup_, err_id.value()); return err_id; } diff --git a/include/boost/leaf/error.hpp b/include/boost/leaf/error.hpp index 40a15f2e..746664e1 100644 --- a/include/boost/leaf/error.hpp +++ b/include/boost/leaf/error.hpp @@ -453,7 +453,8 @@ namespace leaf_detail template inline void slot::propagate( int err_id ) noexcept(!BOOST_LEAF_CFG_DIAGNOSTICS) { - if( this->key()!=err_id && err_id!=0 ) + BOOST_LEAF_ASSERT(err_id); + if( this->key()!=err_id ) return; if( impl * p = tls::read_ptr>() ) *p = std::move(*this);