
On Thu, Oct 7, 2010 at 10:44 PM, Bryce Lelbach <admin@thefireflyproject.us> wrote:
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
I think this is great, for selfish reasons. I'm currently working on a project that uses the clang and LLVM API. clang and LLVM coding conventions are to compile w/o exceptions and without RTTI. I'm able to compile the Boost that I use (Spirit/Proto/Fusion + deps mostly) without RTTI (after a minor fix to the provided Boost workaround), but getting jazz to compile without exceptions is a larger task. This would make it easier.
clang and LLVM do not use exceptions and RTTI because they found that compiling without these two features decreases binary size and increased runtime speed. Given how popular clang and LLVM are, I think any changes that Boost can make to reduce RTTI/exception dependencies without decreasing the functionality or portability of Boost would be good for adoption.
I think the impact of exceptions on efficiency may vary from application to application and certainly depends on the compiler's optimization. (In optimized object code unsafe_function does not seem to be significantly more efficient than boost::function.) But yes, if your project finds it is best to work without RTTI then boost::function's exception safety guarantee will get in the way, and it would be nice to have a function wrapper with no exception safety guarantee. Daniel Walker