
I don't understand why, but this patch will disambiguate the call to throw_exception and quiet gcc, move definition later in file + qualify call to boost::throw_exception diff -r 547ea1f75944 boost/throw_exception.hpp --- a/boost/throw_exception.hpp Wed May 05 20:24:10 2010 -0400 +++ b/boost/throw_exception.hpp Fri May 07 20:18:18 2010 -0400 @@ -43,25 +43,6 @@ namespace boost { -#if !defined( BOOST_EXCEPTION_DISABLE ) - namespace - exception_detail - { - template <class E> - void - throw_exception_( E const & x, char const * current_function, char const * file, int line ) - { - throw_exception( - set_info( - set_info( - set_info( - enable_error_info(x), - throw_function(current_function)), - throw_file(file)), - throw_line(line))); - } - } -#endif #ifdef BOOST_NO_EXCEPTIONS @@ -86,6 +67,26 @@ #endif +#if !defined( BOOST_EXCEPTION_DISABLE ) + namespace + exception_detail + { + template <class E> + void + throw_exception_( E const & x, char const * current_function, char const * file, int line ) + { + boost::throw_exception( + set_info( + set_info( + set_info( + enable_error_info(x), + throw_function(current_function)), + throw_file(file)), + throw_line(line))); + } + } +#endif + } // namespace boost