
From: "Peter Myerscough-Jackopson" <peter.myerscough-jackopson@macltd.com> Sent: Thursday, September 02, 2010 5:36 PM
I am using boost::function on an embedded platform, which requires me to not use exceptions, and as commented in the thread associated with
http://article.gmane.org/gmane.comp.lib.boost.devel/195351
I am checking that the function object contains a function before calling it. There is therefore no need for the invocation of the function to check if it is valid, but also there is no method circumvent this checking, and therefore my program requires the definition of boost::throw_exception, when really it is not needed. This is a concern because I intend on compiling my code into a library and do not wish to require the user to define boost::throw_exception, especially when I am guaranteeing it isn't going to be called from this site. I liked the idea of a templated NOP for the function library, but at the very least an unchecked invocation method would be great, or a nop-if-empty invocation method would be useful.
If you are certain that neither you nor your users use or will use boost::throw_exception (to actually handle some other cases 'exceptional' cases in other parts of boost) then you can provide the definition yourself. Something along the lines of: void throw_exception( std::exception const & ) { assert( !"Should not get reached." ); #ifdef _MSC_VER __assume( false ); #elif defined( __GNUC__ ) __builtin_unreachable(); #else .... #endif } should pretty much completely remove the if-then-throw code from your release binary... ps. the code mentioned in the thread you linked to has since somewhat progressed and can always be found @ https://svn.boost.org/svn/boost/sandbox/function/boost/function ... but it is still in an unfinished-alpha-msvc specific stage ... I haven't touched it in months as there has not been any real response from the official maintainer and I've been swamped with other things (and am currently working on GIL::IO) but will surely finish it when I get the time (now that I've started working with GCC also)... -- "That men do not learn very much from the lessons of history is the most important of all the lessons of history." Aldous Huxley