The inclusion versus separation model debate has been a
controversial one. The inclusion model is a pragmatic answer dictated largely by
existing practice in C++ compiler implementations. However, the first C++
implementation was different: The inclusion of template definitions was
implicit, which created a certain illusion of separation.
[StroustrupDnE] contains a good
presentation of Stroustrup's vision for template code organization and the
associated implementation challenges. It clearly wasn't the inclusion model.
Yet, at some point in the standardization process, it seemed as if the inclusion
model was the only viable approach after all. After some intense debates,
however, those envisioning a more decoupled model garnered sufficient support
for what eventually became the separation model. Unlike the inclusion model,
this was a theoretical model not based on any existing implementation. It took
more than five years to see its first implementation published (May 2002).
It is sometimes tempting to imagine ways of extending the
concept of precompiled headers so that more than one header could be loaded for
a single compilation. This would in principle allow for a finer grained approach
to precompilation. The obstacle here is mainly the preprocessor: Macros in one
header file can entirely change the meaning of subsequent header files. However,
once a file has been precompiled, macro processing is completed, and it is
hardly practical to attempt to patch a precompiled header for the preprocessor
effects induced by other headers.
A fairly systematic attempt to improve C++ compiler diagnostics
by adding dummy code in high-level templates can be found in Jeremy Siek's Concept Check Library (see [BCCL]). It is part of the Boost library
(see [Boost]).
-----------------------------------------------------------------
See Also:
-----------------------------------------------------------------
See Also:
-----------------------------------------------------------------
- Complete Tutorial of C++ Template's
- Standard Template Library Tutorial
- Inter Process Communication Tutorial
- Advance Programming in C & C++
-----------------------------------------------------------------
No comments:
Post a Comment