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;
|
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
|
#ifdef BOOST_NO_RTTI
|
||||||
@ -93,17 +107,7 @@ boost
|
|||||||
#else
|
#else
|
||||||
template <class ErrorInfo,class E>
|
template <class ErrorInfo,class E>
|
||||||
inline
|
inline
|
||||||
typename ErrorInfo::value_type const *
|
typename exception_detail::get_error_info_return_type<E,typename ErrorInfo::value_type>::type
|
||||||
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 *
|
|
||||||
get_error_info( E & some_exception )
|
get_error_info( E & some_exception )
|
||||||
{
|
{
|
||||||
if( exception const * x = dynamic_cast<exception const *>(&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 ;
|
run errinfos_test.cpp ;
|
||||||
compile-fail exception_fail.cpp ;
|
compile-fail exception_fail.cpp ;
|
||||||
compile-fail throw_exception_fail.cpp ;
|
compile-fail throw_exception_fail.cpp ;
|
||||||
|
compile-fail error_info_const_fail.cpp ;
|
||||||
|
|
||||||
#headers
|
#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