mirror of
https://github.com/boostorg/exception.git
synced 2025-07-21 16:32:05 +02:00
fixing compile errors with some compilers
[SVN r55744]
This commit is contained in:
@ -73,6 +73,20 @@ boost
|
||||
return x.throw_line_!=-1 ? &x.throw_line_ : 0;
|
||||
}
|
||||
};
|
||||
|
||||
template <class T,class R>
|
||||
struct
|
||||
get_error_info_return_type
|
||||
{
|
||||
typedef R * type;
|
||||
};
|
||||
|
||||
template <class T,class R>
|
||||
struct
|
||||
get_error_info_return_type<T const,R>
|
||||
{
|
||||
typedef R const * type;
|
||||
};
|
||||
}
|
||||
|
||||
#ifdef BOOST_NO_RTTI
|
||||
@ -93,17 +107,7 @@ boost
|
||||
#else
|
||||
template <class ErrorInfo,class E>
|
||||
inline
|
||||
typename ErrorInfo::value_type const *
|
||||
get_error_info( E const & some_exception )
|
||||
{
|
||||
if( exception const * x = dynamic_cast<exception const *>(&some_exception) )
|
||||
return exception_detail::get_info<ErrorInfo>::get(*x);
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
template <class ErrorInfo,class E>
|
||||
inline
|
||||
typename ErrorInfo::value_type *
|
||||
typename exception_detail::get_error_info_return_type<E,typename ErrorInfo::value_type>::type
|
||||
get_error_info( E & some_exception )
|
||||
{
|
||||
if( exception const * x = dynamic_cast<exception const *>(&some_exception) )
|
||||
|
@ -38,6 +38,7 @@ run no_exceptions_test.cpp : : : <exception-handling>off ;
|
||||
run errinfos_test.cpp ;
|
||||
compile-fail exception_fail.cpp ;
|
||||
compile-fail throw_exception_fail.cpp ;
|
||||
compile-fail error_info_const_fail.cpp ;
|
||||
|
||||
#headers
|
||||
|
||||
|
14
test/error_info_const_fail.cpp
Normal file
14
test/error_info_const_fail.cpp
Normal file
@ -0,0 +1,14 @@
|
||||
//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/get_error_info.hpp>
|
||||
|
||||
typedef boost::error_info<struct foo_,int> foo;
|
||||
|
||||
void
|
||||
test( boost::exception const * e )
|
||||
{
|
||||
++*boost::get_error_info<foo>(*e);
|
||||
}
|
Reference in New Issue
Block a user