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
15class my_exception: public std::exception
16{
17};
18
19class my_exception2: public std::exception, public boost::exception
20{
21};
22
23class my_exception3: public std::exception, public virtual boost::exception
24{
25};
26
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

source code of boost/libs/throw_exception/test/throw_exception_test2.cpp