What's the association between vc100 (default generator for Visual Studio 2010) and C++11/C++14?

I’m a new hand in C++ and I’ve got a question about some Visual Studio version names.

C++98, C++11 and C++14 are versions of the ISO/IEC 14882 standard for the C++ programming language; this means, for example, C++11 has some new features added or modified compared to C++98, C++14 has some new features added or modified compared to C++11, like the upgrade.

When I’m using Visual Studio as the IDE to develop programs, I also noticed another thing called "vc100" (for Visual Studio 2010), "vc140" (for Visual Studio 2019)… it’s called generator. I supposed that’s also called the version of compiler, like the version of GCC.

So, the confusion is, what’s the association between C++11 and the generator name (like "vc100"); or, to be specific, does the year part in the generator called "Visual Studio 2010" (2010 is the year here) means it doesn’t support C++11 and later, but only supports C++98?

>Solution :

There is no direct connection or association between the names of the various versions of the Visual C/C++ compiler and any particular C++ Standard. Nor is there actually a direct correlation between the name of the compiler (e.g. vc100) and the ‘year’ part of the name of the corresponding version of Visual Studio.

In the case of VS-2010, there is an incidental overlap between the year and the version number (10.0); but, as can be seen from the Visual Studio Tag Wiki, that year/version is the only one where the numbers coincide.

Note also that a compiler released in 2010 (as was vc100) is extremely unlikely to fully support the C++11 Standard (though VS and MSVC often have provisional support for the ‘next’ due Standard, if a working draft is available); however, later versions of MSVC generally have ‘retro’ support for several earlier Standards: The latest version (VS-2022) has the option of using C++14, C++17, C++20 or (experimentally) the provisional C++23 Standard. When compiling code with Visual Studio, you can select/specify which of the C++ Standards you want to follow in each project’s settings.

Leave a Reply