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.
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 |