Compilers for teaching C++

There are several compilers acceptable for learning C++. The following table tries to summarize most of the features I'm often asked about.

In this table, "compatible" means that the usage conforms to the "old" standard way of doing things, while "standard" means that it meets the current draft standard. Note that several compilers support both usages in some categories.

Common Compilers
Compiler name OS(s) Version(s) Templates Namespaces Includes STL Exceptions
Borland C++ Win95, WinNT 5.5 (C++ Builder 5) Standard Standard or compatible Standard or compatible Yes (Standard) Yes (Standard)
Borland C++ Win95, WinNT 5.0 Standard Standard or compatible Standard or compatible Yes (Standard) Yes (Compatible)
Visual C++ Win95, WinNT 6.0 Standard Standard Standard or compatible (can't mix) Yes (standard includes) Yes
Visual C++ Win95, WinNT 5.0 Standard Standard Standard, some compatible, can't mix Yes (standard includes) Yes (Limited)
Visual C++ Win31 1.0 No No Compatible No No
DEC C++ OSF1 V5.1 alpha V6.3-008 Standard with some limitations Limited Mixture Limited Limited and nonstandard
GNU G++ OSF1 V4.0 alpha (and others) 2.95.2 Standard with limitations Standard (but a bit buggy) Standard and compatible Standard with limitations Limited
Cygwin/GNU G++ Windows 3.3.1 Standard Standard Standard and compatible Standard Standard