Announcing November CTP of the C++ compiler, now with more C++11

On February at the Going Native conference, we promised to work on implementing more parts of the C++11 standard. We also made a commitment to progressively roll out these features on a faster cadence through out-of-band releases such as CTPs (customer technology previews).

We delivered!

Today at Build 2012, Herb Sutter announced that we’re following through on our commitment by shipping the first batch of new C++11 features in the November 2012 Compiler CTP. Herb also announced that more information about the next batch of C++11 features would be coming in the first half of 2013.

The November 2012 CTP release is available immediately for download here: It contains the following C++11 additions:

  • Variadic templates
  • Uniform initialization and initializer_lists
  • Delegating constructors
  • Raw string literals
  • Explicit conversion operators
  • Default template arguments for function templates

For those eager to learn how to put these cool C++11 features into practice, Stephan Lavavej took the compiler out for a spin in part 6 of his ongoing Core C++ series on Channel 9. Check it out!

Installation and Usage

After downloading and installing the program, you can launch Visual Studio 2012, load your C++ project and you can switch to the new compilers.We recommend you can create a separate project configuration from menu Build > Configuration Manager by duplicating your existing configuration and then follow the steps below:

  1. Open Project Property Pages (Alt+F7 under the Visual C++ mappings)
  2. From the ‘General’ tab, change ‘Platform toolset’ from ‘Visual Studio 2012 (v110)’ to ‘Microsoft Visual C++ Compiler Nov 2012 CTP (v120_CTP_Nov)’ and close the Property Pages
  3. Launch a full rebuild of your project

Important Notes

  • This is a Customer Technology Preview and does not come with a ‘Go Live’ license.
  • Visual Studio 2012 is required as a prerequisite for installing the package. If you don’t already have one, just download the free Desktop Express edition here.
  • This package contains only the compiler, and does not yet come with an updated standard library to use the features (such as a std::vector initializer_list constructor).
  • This version of the compiler is compatible with CRT 11.0 only and can be used as an alternative for the Visual C++ 2012 RTM compiler only.
  • While a new Platform Toolset is provided for convenience of integrating the compiler as part of the Visual Studio 2012 build environment, the VS 2012 IDE, Intellisense, debugger, static analysis, and other tools remain essentially unchanged and do not yet provide support for these new C++11 features.
  • For a list of known breaking changes introduced to support C++11, consult the documentation on the download site. It will always include the most up-to-date information.

We Want Your Feedback!

If you find any bugs (and a few likely escaped us!), please submit a report for Visual Studio via Microsoft Connect and use “[Codename Milan]” as a prefix in the bug title. You can also leave comments below and submit sugestions to Visual Studio UserVoice.

We’re very excited to have reached this milestone and hope you enjoy experimenting with this new compiler and report back. Remember, you can grab the CTP here and watch STL’s Core C++ Episode 6 of n video here.