I'm currently evaluating the possibility to move from C++11 to C++17. I currently use VS 2017 and Intel Compiler 19.0.0 (Initial Release), and I got two questions:
⚫ Q1: Does IC 19.0.0 supports C++17 with VS 15.7 or older versions?
I checked the Visual Studio 2017 support article [1] and it says the following regarding VS 2017, IC 19.0.0 and C++17:
Microsoft Visual Studio 2017 version | Supported Intel Compiler Version -------------------------------------|---------------------------------------------- 15.8 | 19.0 but without the additional C++17 support 15.7 | 19.0 15.6, 15.5, 15.4 | 19.0 Initial Release
[1]: https://software.intel.com/en-us/articles/intel-compilers-integration-su...
There is no note on C++17 support with VS 15.4 to 15.7, but there is an explicit note on the lack of support with 15.8, This gives me the impression that IC 19.0 would support C++17 on these older VS versions. I tried searching the FAQs, Release Notes and documentation as well as this forum, but I could not find any piece of information to confirm if C++17 is supported or not with those older VS 2017 minor versions.
Does anyone here knows if IC 19.0.0 supports compiling code in C++17 mode when used with VS 2017 minor versions 15.7 or older?
⚫ Q2: How can I tell compilervars.bat which VS 2017 toolset (minor version) it should use?
My VS 2017 install (15.9.19) has multiple VC toolsets (found in the VC\Tools\MSVC directory):
VC Toolset | `_MSC_VER` | VS 2017 version -----------|------------|---------------- 14.13 | 1913 | 15.6 14.14 | 1914 | 15.7 14.16 | 1916 | 15.9
When calling compilervars.bat to set up the development environment, I couldn't find a way to tell it which VS 2017 toolset it should use. By compiling a simple program which outputs the _MSC_VER, it seems to be getting the latest one (VC 14.16, VS 15.9):
// version.cpp #include <iostream> int main() { std::cout << _MSC_VER << '\n'; }
> "C:\Program Files (x86)\IntelSWTools\compilers_and_libraries\windows\bin\compilervars.bat" intel64 vs2017 > icl.exe version.cpp > version.exe 1916
Assuming that ICC 19.0.0 would support C++17 mode with VS 2017 15.7 or older, I would need to find a way to make compilervars.bat use another toolset version (e.g.: VC 14.13, VS 15.6).
Is there any way to tell compilervars.bat which VS 2017 toolset (minor version) it should use among the ones installed?