//Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. //Distributed under the Boost Software License, Version 1.0. (See accompanying //file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) #include "helper2.hpp" #include #include #include typedef boost::error_info test_data; void throw_fwd( void (*thrower)(int) ) { try { thrower(42); } catch( boost::exception & x ) { x << test_data(42); throw; } } template void tester() { try { throw_fwd( &boost::exception_test::throw_test_exception ); BOOST_ASSERT(false); } catch( ... ) { boost::exception_ptr p = boost::current_exception(); try { rethrow_exception(p); BOOST_TEST(false); } catch( T & y ) { BOOST_TEST(boost::get_error_info(y)); if( boost::shared_ptr d=boost::get_error_info(y) ) BOOST_TEST(*d==42); BOOST_TEST(y.x_==42); } catch( ... ) { BOOST_TEST(false); } } } int main() { tester(); tester(); tester(); return boost::report_errors(); }