QUOTE(teetee @ Apr 24 2003 - 09:07 AM)
C++ is C++ is C++
In theory, yes, in practice no. C++ is a complex language and MSVC++ has some important differences from the ANSI standard most noteably:
1) Variables declared in for loops are scoped in the enclosing block not in the for loop block.
2) Const member initialisers are not allowed in class definitions.
In MSVC++ 7 they have actually changed the language to introduce the "managed" keyword for working with .NET, therefore this version cannot be said to be a C++ compiler.
Infact some of grosser problems can be fixed by using the /Za switch to the compiler to switch it into ANSI mode. The problem with this is that then most of the windows header files will not compile. With MSVC++ 7 you can change some of the behaviour using pragmas on a file by file basis.
The approach that gcc takes is to "fix" the system headers so that they will compile with ansi conformance switched on then use these headers in preference to the system ones.
The lastest version of the Intel compiler "knows" about everything up to P4 and can also perform automatic vectorisation of floating point code to the SSE unit. This feature was touted in 6 but only really works well in 7. It can also do cross translation unit optimisations. It can also do an attempt at automatically introducing OpenMP directives to automatically multithread code.
I have found that at least with the latest version it is only the cross translation unit optimisations which are really buggy. It is a moot points as to if all this optimisation is worth it. Depending upon the code the MSVC++ 7 compiler can be just as good code which has been specifically targeted at the P4 by icl.