Samuel wrote:
----- Original Message ----- From: "Peter Dimov"
To: Sent: Wednesday, August 11, 2004 3:40 AM Subject: Re: [Boost-users] RTTI for VC 6 Samuel wrote:
VC 6 has an option for Run-Time Type Information (RTTI) that is normally off. I was able to compile and execute a sample program that had a problem. I noticed that Boost uses RTTI (such as the dynamic_cast operator), so I checked to see if the option was on; it was not. I turned the option on and the program worked.
That problem is probably a known problem, but something such as the following can be added somewhere to not allow a VC 6 program to even compile if the RTTI option is off. I think it could make things a little easier for some beginners.
# if !defined(_CPPRTTI) # error "Boost requires use of RTTI" # endif
Some parts of Boost need RTTI, some do not. It is not reasonable to reject a program that doesn't ever invoke a dynamic_cast on a polymorphic type (which is a level 1 warning IIRC) just because it happens to include a boost header.
I don't understand this. I did not reply earlier since I assumed it does not matter, and I still assume that whoever might be concerned about this can be the one to decide the relevance. However if you are saying that a warning will result from not using dynamic_cast then you did not read my message. The problem is that the compiled program did not work; it produced unexpected results (I forget the details). The unexpected results could easily cause someone else more work to solve.
What Mr. Dimov is saying is that it is impossible to place the code you would like to use above in Boost because it would affect other Boost libraries which do not need RTTI to work. Furthermore if it were placed in the header file of a library which did need RTTI to work, just including that header file, without actually using code in it that needed RTTI such as dynamic_cast, would cause an immediate compile time error.