mirror of
https://github.com/boostorg/throw_exception.git
synced 2025-07-16 14:02:06 +02:00
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
|
||||
//
|
||||
// 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
|
||||
// accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt)
|
||||
// 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)
|
||||
//
|
||||
// http://www.boost.org/libs/utility/throw_exception.html
|
||||
//
|
||||
@ -39,8 +40,14 @@ void throw_exception(std::exception const & e); // user defined
|
||||
|
||||
#else
|
||||
|
||||
inline void throw_exception_assert_compatibility( std::exception const & ) { }
|
||||
|
||||
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
|
||||
throw enable_current_exception(enable_error_info(e));
|
||||
#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