
Well, my last reply does not seem to get through... ----- Original Message ----- From: "Doug Gregor" <dgregor@cs.indiana.edu> Newsgroups: gmane.comp.lib.boost.devel Sent: Friday, January 07, 2005 10:42 AM Subject: Re: Re: BOOST_NO_RTTI?
On Jan 7, 2005, at 10:01 AM, David Abrahams wrote:
Douglas Gregor wrote:
We've now had a user request that could be solved by adding a BOOST_NO_RTTI macro, that (when set) would disable Boost's use of constructs that use run-time type information (dynamic_cast, typeid, etc.), similar to our BOOST_NO_EXCEPTIONS.
http://lists.boost.org/MailArchives/boost-users/msg09240.php
I'll plan to add it unless there is violent disagreement.
I thought BOOST_NO_XXX macros, where XXX is as standard C++ feature, were supposed to be _detection_ macros (?)
Okay, so let's have BOOST_NO_RTTI defined when the compiler/environment does not support RTTI, and we can use it to turn off use of RTTI in some Boost components :)
Well, I think that we should first ensure we never uses RTTI if we don't need it so if it is possible to determine it at compile-time, we should then uses specialization for each case (RTTI needed and RTTI not needed). In that case if we try to uses the specialization that require RTTI and RTTI is not enabled, we should force a compile-time assertion. If RTTI is uses for some optimizations but is not strictly necessary, then we should not used it if it is not available (as we can determine from compiler specific defines). Finally, my compiler only giving me a warning (CodeWarrior when using boost::function with RTTI disabled). It might be good to add a comment in the code and a note in the documentation that explain why RTTI is used and the effect of turning it off. Also, the program seems to run correctly when I try it. Philippe