-----Original Message----- From: Edward Diener [mailto:eddielee@tropicsoft.com]
From: Edward Diener [mailto:eddielee@tropicsoft.com]
What does it mean in the type_traits documentation that "direct compiler support for that traits class is required" ? I do not see that terminology explained anywhere and am lost as far as to what it refers.
It means that there is no known way to implement that class (in a Standard-compliant, portable manner).
The type traits library is in a rather uncomfortable position, since it is essentially trying to add reflection to the C++ language after the fact.
As currently implemented, the type traits library bends over backwards to try to provide as much as possible to as many different compilers as possible. But the simple fact is that it should not really be a library, but a part of the supplied language.
Some type traits classes technically require compiler support. However, those classes will all try to take their "best guess" at the correct answer -- sometimes defaulting to a "safe" default if they can't figure out the correct answer.
What sort of compiler support is being talked of here, since you mention that it can't be done in a standard-compliant manner ? Does this mean looking at preprocessor defines to determine the correct results, or what ? It is the vagueness of the term "compiler support", which you did not alleviate in your answer, which I am trying to clarify.
"Compiler support" means "anything the compiler can give us so that we can implement that class correctly". It could be a specially-recognized preprocessor define, a quasi-class (e.g., SGI's type traits), a pragma, a keyword, or anything else that the compiler provides. -Steve