...On Windows Intel compiler is compatible with Microsoft compiler and on Linux Intel compiler is compatible with gcc...
Let me "translate" your explanation to another form: If a software developer implemented some code in C/C++ with Intel compiler it would be impossible to port the codewithout modifications to Linux. Right?
Look, there are standards and specifications forC and C++ languages.
For example, Turbo C++ v3.x.x,more than 20 year old compiler for MS DOS operating system!,supports C++ standard 2.1 and version 3.0 templates.
I wonder if that error, in case ofIntel and Microsoft,is some kind littledeviation from these standards.
Also, such declaration is Not a feature ofC++. It is a way howa software developercoulddeclare a typedef in C language. Pesonally, I always use thesecond form of the declaration.