C++ 11
- auto關鍵字
- decltype關鍵字
- nullptr字面值
- constexpr關鍵字
- for(declaration : expression)
- Lambda表達式
- initializer_list
- 標准庫bind函數
- 智能指針shared_ptr,unique_ptr
- 右值引用&&
- STL容器std::array,std::forward_list,std::unordered_map,std::unordered_set
C++ 14
- 拓展了lambda表達式,更加泛型:支持auto
- 拓展了類型推導至任意函數:C11只支持lambda返回類型的auto
- 棄用關鍵字 [[deprecated]]
C++ 17
- 拓展了constexpr至switch if等:C++11的constexpr函數只能包含一個表達式
- typename 嵌套
- inline 內聯變量
- 模板參數推導
- 元組類 std::tuple:std::pair實現兩個元素的組合,它實現多個
- 類模板
std::variant
表示一個類型安全的聯合體。 - 引用包裝器 std::reference_wrapper
- 變長參數模板
- 結構化綁定(函數多值返回時用{}合成struct)
- 非類型模板參數可傳入類的靜態成員
- 在if和switch中可進行初始化
- 初始化(如struct)對象時,可用花括號進行對其成員進行賦值
- 簡化多層命名空間的寫法
- lambda表達式可捕獲*this的值,但this及其成員為只讀
- 十六進制的單精度浮點數
- 繼承與改寫構造函數
using B1::B1;//表示繼承B1的構造函數
- 當模板參數為非類型時,可用auto自動推導類型
- 判斷有沒有包含某文件__has_include
- [[fallthrough]]用於switch語句塊內,表示會執行下一個case或default
- [[nodiscard]]表示函數的返回值沒有被接收,在編譯時會出現警告。
- [[maybe_unused]]即便沒使用也不警告
https://blog.csdn.net/qq811299838/article/details/90371604
C++ 20
- concept用於聲明具有特定約束條件的模板類型
// 聲明一個數值類型的concept template<typename T> concept number = std::is_arithmetic<T>::value;
- 范圍庫(Ranges Library)
- 協程(Coroutines)
- 模塊(modules)