Prev Up Next
Go backward to Comeau C++ Compiles All of the Second Edition's Example Programs
Go up to News Articles
Go forward to News Archive

MSVC++ 6.0 Compiles All But Two of the Second Edition's Example Programs

 By Dave Musser
 6/7/2001
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 compilers:
  • Borland C++, version 5.5 (DOS/Windows) 
  • SGI C++, version 7.3.1.1m
  • GNU C++, version 2.95.2
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:
  • 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 ERROR message.
All of the other examples compiled and executed successfully.
  I ran these tests after installing Service Pack 5. Before 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.

 

Prev Up Next