1.右值引用與移動構造語義:
針對C++對臨時變數只能以值或常引用的形式作為函數實參的問題,右指引用即臨時變數對象的引用,可藉此實現一種新的移動構造複製語義,避免對象拷貝賦值下的大量物件建構複製開銷。http://bbs.chinaunix.net/thread-1251475-1-1.html2.通過使用 extern 來修飾一個模板類,告知編譯器該模板無需在當前編譯單元內執行個體化,編譯器早已在11標準之前實現。3.lambda表示式:定義匿名函數對象,大大減少定義謂詞的開銷(如在STL中),更易被編譯器最佳化。4.類型推斷:11中,auto 關鍵字的語義有所更改,通過運算式的右值來自動推斷左值的類型,定義模板,或需要獲得 Lambda 運算式等匿名對象的類型時,可提供方便。5.傳回值後置式函式宣告文法:類似 lambda 運算式中的傳回值定義方式,模板和普通函數也可以使用類似的文法指定傳回值,例如:
template<class Lhs, class Rhs> auto adding_func(const Lhs &lhs, const Rhs &rhs) -> decltype(lhs+rhs) {return lhs + rhs;} |
顯而易見,這種文法主要用來協助完成模板定義時的類型推斷——在上例中,由於用來推斷傳回型別的“lhs”和“rhs”在“adding_func(...)”之前還未定義,因此必須將傳回值類型定義延遲到參數列表之後。
應注意到,使用這種後置文法時,函數原來指定傳回值類型的位置必須記做“auto”。
6.function模板,泛型函數模板,是如何?對函數對象與函數指標的區別的,神奇。
7.shared_ptr<T>智能指標 引用計數共用對象,可以傳遞撤銷策略給建構函式,便於對像檔案指標這種資源的共用。(weak_ptr,todo)
-----
編譯器支援情況參考:http://www.csdn.net/article/2012-08-13/2808540