forked from boostorg/throw_exception
throw_exception() now ensures that the exception type passed to it derives publicly from std::exception.
[SVN r45041]
This commit is contained in:
committed by
Peter Dimov
parent
7ad5ceee77
commit
98ff58cf46
@ -11,10 +11,11 @@
|
|||||||
// boost/throw_exception.hpp
|
// boost/throw_exception.hpp
|
||||||
//
|
//
|
||||||
// Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
|
// Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
|
||||||
|
// Copyright (c) 2008 Emil Dotchevski and Reverge Studios, Inc.
|
||||||
//
|
//
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See
|
// Distributed under the Boost Software License, Version 1.0. (See
|
||||||
// accompanying file LICENSE_1_0.txt or copy at
|
// accompanying file LICENSE_1_0.txt or copy at
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
//
|
//
|
||||||
// http://www.boost.org/libs/utility/throw_exception.html
|
// http://www.boost.org/libs/utility/throw_exception.html
|
||||||
//
|
//
|
||||||
@ -39,8 +40,14 @@ void throw_exception(std::exception const & e); // user defined
|
|||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
inline void throw_exception_assert_compatibility( std::exception const & ) { }
|
||||||
|
|
||||||
template<class E> inline void throw_exception(E const & e)
|
template<class E> inline void throw_exception(E const & e)
|
||||||
{
|
{
|
||||||
|
//All boost exceptions are required to derive std::exception,
|
||||||
|
//to ensure compatibility with BOOST_NO_EXCEPTIONS.
|
||||||
|
throw_exception_assert_compatibility(e);
|
||||||
|
|
||||||
#ifndef BOOST_EXCEPTION_DISABLE
|
#ifndef BOOST_EXCEPTION_DISABLE
|
||||||
throw enable_current_exception(enable_error_info(e));
|
throw enable_current_exception(enable_error_info(e));
|
||||||
#else
|
#else
|
||||||
|
18
test/throw_exception_fail.cpp
Normal file
18
test/throw_exception_fail.cpp
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
//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 <boost/throw_exception.hpp>
|
||||||
|
|
||||||
|
struct
|
||||||
|
my_exception
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
void
|
||||||
|
tester()
|
||||||
|
{
|
||||||
|
//Must not compile, throw_exception requires exception types to derive std::exception.
|
||||||
|
boost::throw_exception(my_exception());
|
||||||
|
}
|
Reference in New Issue
Block a user