
[Did I already suggest something like this?...] The Wave preprocessing tool can accept locations for a compiler's system header files. I think the C++ standard allows the standard headers to not be implemented as conventional files. I'm wondering if we can do that, as an experiment. In other words, the Wave library could have an option to inject our version of idealized renditions of the standard headers directly into the token stream, without referencing actual header files. This could catch bugs that assume certain things about actual header files that wouldn't be present in our version. Our standard headers could be in the form of a collection of functions, one for each compiler item (function, type, object, template, macro, etc.). Those functions would be passed in a level of expression (declaration in a secret __boost_std namespace, injection of declaration into the std namespace, full definition in __boost_std namespace [or no namespace for macros]) and a descriptor of the environment (bits per byte, bytes per short/int/long, 2/1-complement or sign-mag, etc.). An inclusion function for each header would call the inclusion functions for each contained item, but only up to the lowest level required. Items originally from other headers would get included if needed, but without injection into std if avoidable. (For instance, #including <iostream> would _not_ get you <istream> and <ostream> for free!) -- Daryle Walker Mac, Internet, and Video Game Junkie darylew AT hotmail DOT com