As noted in Appendix D of the second edition of
STL Tutorial and Reference Guide, the book's 100 or so
example programs have all been tested successfully with the following
The Microsoft Visual C++ Compiler, Version 6.0, is known not to be
as fully compliant with the C++ Standard as those above.
Most notably it still doesn't implement
template member functions or partial specialization of templates,
both of which are used in significant ways in STL. It does however
provide enough workarounds for the lack of template member functions
to handle all uses of this feature in the book's example programs.
Only two of the example programs failed to compile with MSVC++ 6.0:
- Borland C++, version 5.5 (DOS/Windows)
- SGI C++, version 22.214.171.124m
- GNU C++, version 2.95.2
All of the other examples compiled and executed successfully.
- Example 16-1, which uses a class template iterator_category that
is not implemented in the MSVC++ 6.0 library since its correct
implementation depends in an essential way on partial specialization.
- Example 24-1, which trips over apparent bugs in MSVC++ 6.0's
<memory> header's facilities for implementation of user-defined allocators.
Attempts to compile Example 24-1 resulted in an INTERNAL COMPILER
I ran these tests after installing Service Pack
installing this service pack I tried compiling with the original
CD-ROM installation. The same two examples failed, although somewhat
differently for Example 24-1: the compiler gave an actual error
message rather than INTERNAL COMPILER ERROR. There were two other
compilation failures, for Examples 2-8 and 6-9, both due to the lack
of a deque<T> constructor that takes T* arguments.
The counterpart of this constructor was present in all other STL
container classes, as a workaround for the lack of template member
functions, but was missing in deque. Service Pack 5 (and
probably earlier Service Packs) fixes that, though.