
Stefan Seefeld wrote:
Thorsten Ottosen wrote:
Hi All,
I'm about to replace all my throw Foo; statetements in the Pointer Container library with something else to support platforms without exceptions.
Is using boost::throw_exception the way to do it?
If I where on such a platform, I kinda think that I would have preferred an assertion *at the throw spot* instead of making the call stack deeper yet and then call about or something.
If it is not a throw expression it ought to be something with similar semantics, such as a function with __attribute__((__noreturn__)) (or whatever it is spelled for a particular compiler), so the compiler knows that no code past this point is ever executed. Else you may get spurious warnings about missing return statements.
is this necessary? after all, I think most function bodies would look like { if( foo() ) boost::throw_exception( ... ) ... // normal code here } Anyway, my feeling is that people that uses BOOST_NO_EXCEPTION would prefer if( foo() ) BOOST_THROW_EXCEPTION( std::exception, "MSG" ); where this expands to BOOST_ASSERT( "MSG" ) when BOOST_NO_EXCEPTION is true. Has anybody that work in an environment without exceptions got any opinions? -Thorsten