|
Boost : |
From: Daryle Walker (darylew_at_[hidden])
Date: 2007-08-31 18:32:48
[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
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk