...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
Front Page / Technical Details / Portability |
It has always been a major goal of MPL development that a program using the MPL should compile and run without modification on a wide variety of compilers. To this end, the library goes to great lengths to hide the quirks of less-than-perfect compilers. Of course, there is only that much that you can do about an utterly broken compiler. This section describes the places where those quirks "leak out" of the library abstraction layer, and what you can do about it when they do.
With respect to MPL compatibility we divide C++ compilers roughly into three categories:
We haven't tested every compiler in existence (simply because we don't have access to all of them), but chances are the table below will give you the information you are looking for. Please note that the fact that one version of a compiler appears in this list as "Not supported" does not mean that future versions are also unworkable — some vendors are working hard to correct the problems... and, as of this writing (late 2004), some are not.
Please keep in mind that this is not a complete list!
Compiler | Versions | Category | Problematic Areas (if any) |
---|---|---|---|
Borland C++ | 5.6.4 | B | Lambda Expressions, Integral Constant Expressions |
Borland C++ | 5.6.1 | C | Not supported |
Comeau C/C++ | 4.2.45, 4.3.3 | A | |
Compaq C++ (Tru64 UNIX) | 6.5 | A | |
GCC | 3.2.2, 3.3.1, 3.4 | A | |
GCC | 2.95.3 | B | Integral Constant Expressions |
HP aCC | 3.55 | C | Not supported |
Intel C++ | 7.1, 8.0 | A | |
Metrowerks CodeWarrior | 8.3, 9.2 | A | |
Microsoft Visual C++ | 7.1 | A | |
Microsoft Visual C++ | 6.0 sp5, 7.0 | B | Lambda Expressions, ETI, Integral Constant Expressions |
SGI MIPSpro | 7.3 | B | Integral Constant Expressions |
Sun CC | 5.6 | C | Not supported |