1 // Copyright 2018 Peter Dimov 2 // 3 // Distributed under the Boost Software License, Version 1.0. 4 // 5 // See accompanying file LICENSE_1_0.txt or copy at 6 // http://www.boost.org/LICENSE_1_0.txt 7 8 #include <boost/throw_exception.hpp> 9 #include <boost/core/lightweight_test.hpp> 10 11 #if defined(_MSC_VER) 12 # pragma warning(disable: 4702) // unreachable code 13 #endif 14 15 class my_exception: public std::exception 16 { 17 }; 18 19 class my_exception2: public std::exception, public boost::exception 20 { 21 }; 22 23 class my_exception3: public std::exception, public virtual boost::exception 24 { 25 }; 26 main()27int main() 28 { 29 BOOST_TEST_THROWS( boost::throw_exception( my_exception() ), boost::exception ); 30 BOOST_TEST_THROWS( boost::throw_exception( my_exception2() ), boost::exception ); 31 BOOST_TEST_THROWS( boost::throw_exception( my_exception3() ), boost::exception ); 32 33 BOOST_TEST_THROWS( BOOST_THROW_EXCEPTION( my_exception() ), boost::exception ); 34 BOOST_TEST_THROWS( BOOST_THROW_EXCEPTION( my_exception2() ), boost::exception ); 35 BOOST_TEST_THROWS( BOOST_THROW_EXCEPTION( my_exception3() ), boost::exception ); 36 37 return boost::report_errors(); 38 } 39