exceptions are handled by BOOST_THROW_EXCEPTION so that the compiler option fno-exceptions may safely be used