C++11 features in Visual Studio 2012
Solution 1:
It's worth noting that Visual Studio 2010 already had quite a bit of early C++11 support. So to summarize what is already linked to in other answers, here is what is new in Visual Studio 11 that was not part of Visual Studio 2010:
- rvalue references to version 2.1 from 2.0
- lambdas to version 1.1 from 1.0.
- decltype to version 1.1 from 1.0(not yet available in developer preview)
- Improved, but still incomplete, Alignment
- completed strongly-typed enums
- forward declared enums
- Standard layout and trivial types
- Atomics
- Strong compare and exchange
- Bi-directional fences
- Data-dependency ordering
- Range-based for loop
In early November 2012, Microsoft announced the Visual C++ Compiler November 2012 CTP, which adds more C++11 functionality to Visual Studio 2012:
- uniform initialization
- initializer lists
- variadic templates
- function template default arguments
- delegating constructors
- explicit conversion operators
- raw strings
Solution 2:
Here is the list of feature of the new visual studio version and here is the list of what all compilers support
Solution 3:
There is a list there. What strikes me the most is the features which are still missing:
- They said they would implement variadic templates as a priority and they didn't.
- We will still have to declare move constructors by hand for many classes, since there is no delegating constructors.
- Inheriting constructors aren't present, and this would really be needed for some code
- No uniform initialization, in particular no initializer lists. This sucks when you have used them with g++.
- Still no correct thread local storage. So you're stuck with
boost::thread_specific_ptr
for a while.
All the other features which are yet missing are mainly stuff you can live without. What I list here is just what nags me everyday when working with VS10. It's just so irritating that they didn't work on the compiler at all.
EDIT: I shall also add that emplace_back
(one great feature for the standard library containers) isn't correctly implemented.