//Copyright (c) 2006-2009 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 <boost/exception/current_exception_cast.hpp>
#include <boost/detail/lightweight_test.hpp>
#include <exception>

class
my_exception:
    public std::exception
    {
    };

class
polymorphic
    {
    virtual
    ~polymorphic()
        {
        }
    };

int
main()
    {
    try
        {
        throw my_exception();
        }
    catch(
    std::exception & e )
        {
        try
            {
            throw;
            }
        catch(
        ...)
            {
            BOOST_TEST(boost::current_exception_cast<std::exception>()==&e);
            BOOST_TEST(!boost::current_exception_cast<polymorphic>());
            }
        }
    return boost::report_errors();
    }