I recently encountered a serious problem that was preventing me from compiling using new C++11 features in Visual Studio 2012 after installing and changing over to the Intel C++ compiler. For archival purposes, you can see the problem below, however, I've put the solution as the first post as I feel that this is important and urge Intel to update their documentation to make this clearer.
For those using features that are not supported by Microsoft Visual C++11 (e.g. template aliases, constructor delegates, etc.) please do the following:
- Go to Tools in the menu.
- Select Options.
- Navigate your way to Intel Composer XE.
- Under the C++ section select compilers.
- There is a text box labelled "Default options"
- Replace "/Qvc11" with "/Qstd=c++11"
- If you're compiling for both Win32 and Win64, you will need to make the change for both platforms; this will only update Win32 by default. You can find a drop-down menu at the top of this page that is labelled "Target platform".
These steps are not clearly explained in the C++11 Features Supported by Intel® C++ Compiler documentation Intel provides.
In the middle of writing a program that's using C++11. Currently using:
template <typename T> using twin = std::tuple<T, T>;
template <typename T> using triad = std::tuple<T, T, T>;
template <typename T> using quartet = std::tuple<T, T, T, T>;
template <typename T> using quintet = std::tuple<T, T, T, T, T>;
template <typename T> using sextet = std::tuple<T, T, T, T, T, T>;
template <typename T> using heptet = std::tuple<T, T, T, T, T, T, T>;
template <typename T> using octet = std::tuple<T, T, T, T, T, T, T, T>;
This compiles fine under the latest version of MinGW, but not the latest version of Intel C++. I was under the impression that Intel were supporting the majority of C++11 features including template aliases. I'm using Visual Studio 2012 with Intel Parallel Studio 13 Trial (I assume this means that Intel's compiler has been integrated with VS as a 'parallel' system).
What can be done to resolve the situation? I know a complaint was placed here here around this time last year and the issue was promised to be fixed in Composer 12.1, but it doesn't seem to have been carried over to the most recent version.