改進的C++11標准的支持
標准模板庫
為STL添加了新的庫文件:<atomic>、<chrono>、<condition_variable>、<filesystem>、<future>、<mutex>、<radio>和<thread>
std::vector在VS2010的16字節縮小到VS2012的12個字節,std::map在VS2010中的16字節縮小到VS2012的8個字節。
其他C++11提高
基於范圍的for循環,支持數組、STL容器和Windows運行時集合。
無狀態的lambda,是從一個空lambda介紹人啟動的代碼塊[]並且不訪問局部變量,隱式現在是函數的轉換指針作為C++11標准要求。
范圍枚舉支持:C++ enum class枚舉鍵現在支持,下面演示與之前的不同
enum class Element { Hydrogen, Helium, Lithium, Beryllium }; void func1(Element e); func1(Hydrogen); // error C2065: 'Hydrogen' : undeclared identifier func1(Element::Helium); // OK
並行編程的支持
泛型並行編程增強
支持asyncchrony和延續的豐富的基於任務的編程模型。參見任務並行(並發運行時)。
並行算法,支持分叉聯接並行度(parallel_for、parallel_for_each、parallel_sort、parallel_reduce、parallel_transform)
並發安全的容器,提供std數據結構的線程安全版本例如priority_queue、queue、vector和map.
異步代理庫,開發人員可以使用表示數據流管道自然分解為並發單元。
VC++中的重大修改
通過/clr編譯的代碼,enum class關鍵字定義為 C++ 11 enum,而不是CLR 的 enum。定義CLR的enum,必須限制的指定可訪問性,參見下面的例子
enum class ArrivalStatus // C++11 scoped enum { Late, OnTime, Early }; private enum class DepartureStatus // CLR enum (because of explicit accessibility) { Late, OnTime, Early }; void PrintStatus(ArrivalStatus arrival, DepartureStatus departure) { Console.WriteLine("Departure: {0}, Arrival: {1}", departure.ToString(), arrival.ToString() // ERROR: not a CLR enum; does not support .ToString() ); }