舉報

會員
現代C++語言核心特性解析
最新章節:
附 錄 特性章節對照表
本書是一本C++進階圖書,全書分為42章,深入探討了從C++11到C++20引入的核心特性。書中不僅通過大量的實例代碼講解特性的概念和語法,還從編譯器的角度分析特性的實現原理,書中還穿插了C++標準委員會制定特性標準時的一些小故事,幫助讀者知其然也知其所以然。本書適合因為工作需要學習C++新特性的C++從業者,同樣也適合對C++新特性非常感興趣的C++愛好者。而對于C++初學者來說,也有必要在理解C++基礎知識后,通過本書來領略C++的另外一道風景。
最新章節
- 附 錄 特性章節對照表
- 42.6 總結
- 42.5 explicit(bool)
- 42.4 變量模板(C++14)
- 42.3 friend聲明模板形參(C++11)
- 42.2 連續右尖括號的解析優化(C++11)
品牌:人郵圖書
上架時間:2021-09-27 17:27:59
出版社:人民郵電出版社
本書數字版權由人郵圖書提供,并由其授權上海閱文信息技術有限公司制作發行
- 附 錄 特性章節對照表 更新時間:2021-09-27 17:50:52
- 42.6 總結
- 42.5 explicit(bool)
- 42.4 變量模板(C++14)
- 42.3 friend聲明模板形參(C++11)
- 42.2 連續右尖括號的解析優化(C++11)
- 42.1 外部模板(C++11)
- 第42章 模板特性的其他優化(C++11 C++14)
- 41.10 總結
- 41.9 約束auto
- 41.8 約束類模板特化
- 41.7 約束可變參數模板
- 41.6.4 嵌套要求
- 41.6.3 復合要求
- 41.6.2 類型要求
- 41.6.1 簡單要求
- 41.6 requires表達式
- 41.5 原子約束
- 41.4 requires子句和約束檢查順序
- 41.3 使用concept和約束表達式定義概念
- 41.2 概念的背景介紹
- 41.1 使用std::enable_if約束模板
- 第41章 概念和約束(C++20)
- 40.3 總結
- 40.2 SFINAE規則詳解
- 40.1 替換失敗和編譯錯誤
- 第40章 SFINAE(C++11)
- 39.3 總結
- 39.2 聚合類型類模板的推導指引
- 39.1 使用自定義推導指引推導模板實例
- 第39章 用戶自定義推導指引(C++17)
- 38.6 總結
- 38.5 聚合類型的類模板實參推導
- 38.4 別名模板的類模板實參推導
- 38.3 lambda類型的用途
- 38.2 拷貝初始化優先
- 38.1 通過初始化構造推導類模板的模板實參
- 第38章 類模板的模板實參推導(C++17 C++20)
- 37.7 總結
- 37.6 擴展的模板參數匹配規則
- 37.5 允許非類型模板形參中的字面量類類型
- 37.4 函數模板添加到ADL查找規則
- 37.3 允許函數模板的默認模板參數
- 37.2 允許局部和匿名類型作為模板實參
- 37.1 允許常量求值作為所有非類型模板的實參
- 第37章 模板參數優化(C++11 C++17 C++20)
- 36.3 總結
- 36.2 減少typename使用的必要性
- 36.1 允許使用typename聲明模板形參
- 第36章 typename優化(C++17 C++20)
- 35.9 總結
- 35.8 lambda表達式初始化捕獲的包展開
- 35.7 using聲明中的包展開
- 35.6 一元折疊表達式中空參數包的特殊處理
- 35.5 折疊表達式
- 35.4 可變參數模板的遞歸計算
- 35.3 sizeof...運算符
- 35.2 形參包展開
- 35.1 可變參數模板的概念和語法
- 第35章 可變參數模板(C++11 C++17 C++20)
- 34.13 總結
- 34.12 模塊(C++20)
- 34.11 不推薦在下標表達式中使用逗號運算符(C++20)
- 34.10 不推薦使用volatile的情況(C++20)
- 34.9 修復const和默認復制構造函數不匹配造成無法編譯的問題(C++20)
- 34.8 調用偽析構函數結束對象聲明周期(C++20)
- 34.7 在delete運算符函數中析構對象(C++20)
- 34.6 允許數組轉換為未知范圍的數組(C++20)
- 34.5 支持new表達式推導數組長度(C++20)
- 34.4 允許按值進行默認比較(C++20)
- 34.3 返回值優化(C++11~C++17)
- 34.2 關于std::launder()(C++17)
- 34.1 顯式自定義類型轉換運算符(C++11)
- 第34章 基礎特性的其他優化(C++11~C++20)
- 33.3 總結
- 33.2.4 promise_type的其他功能
- 33.2.3 co_return運算符原理
- 33.2.2 co_yield運算符原理
- 33.2.1 co_await運算符原理
- 33.2 協程的實現原理
- 33.1 協程的使用方法
- 第33章 協程(C++20)
- 32.4 總結
- 32.3 新增宏VA_OPT
- 32.2.3 標準庫功能特性測試宏
- 32.2.2 語言功能特性測試宏
- 32.2.1 屬性特性測試宏
- 32.2 特性測試宏
- 32.1 預處理器__has_include
- 第32章 新增預處理器和宏(C++17 C++20)
- 31.6 總結
- 31.5.8 no_unique_address
- 31.5.7 likely和unlikely
- 31.5.6 maybe_unused
- 31.5.5 nodiscard
- 31.5.4 fallthrough
- 31.5.3 deprecated
- 31.5.2 carries_dependency
- 31.5.1 noreturn
- 31.5 標準屬性
- 31.4 使用using打開屬性的命名空間
- 31.3 標準屬性說明符語法
- 31.2 MSVC的屬性語法
- 31.1 GCC的屬性語法
- 第31章 屬性說明符和標準屬性(C++11~C++20)
- 30.7 總結
- 30.6 C++17中使用new分配指定對齊字節長度的對象
- 30.5 其他關于對齊字節長度的支持
- 30.4 使用alignas說明符
- 30.3 使用alignof運算符
- 30.2 C++11標準之前控制數據對齊的方法
- 30.1 不可忽視的數據對齊問題
- 第30章 alignas和alignof(C++11 C++17)
- 29.6 總結
- 29.5 用戶自定義字面量
- 29.4 原生字符串字面量
- 29.3 單引號作為整數分隔符
- 29.2 二進制整數字面量
- 29.1 十六進制浮點字面量
- 第29章 字面量優化(C++11~C++17)
- 28.3 總結
- 28.2 表達式求值順序詳解
- 28.1 表達式求值順序的不確定性
- 第28章 確定的表達式求值順序(C++17)
- 27.17 總結
- 27.16 判斷常量求值環境
- 27.15 使用constinit檢查常量初始化
- 27.14 使用consteval聲明立即函數
- 27.13 允許在constexpr中更改聯合類型的有效成員
- 27.12 允許在constexpr中進行平凡的默認初始化
- 27.11 允許在constexpr函數中出現Try-catch
- 27.10 允許constexpr虛函數
- 27.9 if constexpr
- 27.8 constexpr的內聯屬性
- 27.7 constexpr lambdas表達式
- 27.6 C++14標準對常量表達式函數的增強
- 27.5 對浮點的支持
- 27.4 constexpr構造函數
- 27.3 constexpr函數
- 27.2 constexpr值
- 27.1 常量的不確定性
- 第27章 常量表達式(C++11~C++20)
- 26.3 總結
- 26.2 使用inline說明符
- 26.1 定義非常量靜態成員變量的問題
- 第26章 擴展的inline說明符(C++17)
- 25.3 總結
- 25.2 thread_local說明符
- 25.1 操作系統和編譯器對線程局部存儲的支持
- 第25章 線程局部存儲(C++11)
- 24.6 總結
- 24.5 兼容舊代碼
- 24.4 自動生成的比較運算符函數
- 24.3 對基礎類型的支持
- 24.2.3 std::partial_ordering
- 24.2.2 std::weak_ordering
- 24.2.1 std::strong_ordering
- 24.2 三向比較的返回類型
- 24.1 “太空飛船”(spaceship)運算符
- 第24章 三向比較(C++20)
- 23.3 總結
- 23.2 nullptr關鍵字
- 23.1 零值整數字面量
- 第23章 指針字面量nullptr(C++11)
- 22.3 總結
- 22.2 別名模板
- 22.1 類型別名
- 第22章 類型別名和別名模板(C++11 C++14)
- 21.7 總結
- 21.6 將異常規范作為類型的一部分
- 21.5 使用noexcept的時機
- 21.4 默認使用noexcept的函數
- 21.3 noexcept和throw()
- 21.2 用noexcept來解決移動構造問題
- 21.1 使用noexcept代替throw
- 第21章 noexcept關鍵字(C++11 C++17 C++20)
- 20.6 總結
- 20.5 綁定的訪問權限問題
- 20.4 實現一個類元組類型
- 20.3.3 綁定到元組和類元組的對象
- 20.3.2 綁定到結構體和類對象
- 20.3.1 綁定到原生數組
- 20.3 結構化綁定的3種類型
- 20.2 深入理解結構化綁定
- 20.1 使用結構化綁定
- 第20章 結構化綁定(C++17 C++20)
- 19.5 總結
- 19.4 單參數static_assert
- 19.3 靜態斷言
- 19.2 靜態斷言的需求
- 19.1 運行時斷言
- 第19章 static_assert聲明
- 18.3 總結
- 18.2 支持初始化語句的switch
- 18.1 支持初始化語句的if
- 第18章 支持初始化語句的if和switch(C++17)
- 17.6 總結
- 17.5 實現一個支持基于范圍的for循環的類
- 17.4 臨時范圍表達式的陷阱
- 17.3 begin和end函數不必返回相同類型
- 17.2 基于范圍的for循環語法
- 17.1 煩瑣的容器遍歷
- 第17章 基于范圍的for循環(C++11 C++17 C++20)
- 16.6 總結
- 16.5 override和final說明符的特別之處
- 16.4 使用final說明符
- 16.3 使用override說明符
- 16.2 重寫引發的問題
- 16.1 重寫、重載和隱藏
- 第16章 override和final說明符(C++11)
- 15.6 總結
- 15.5 使用帶小括號的列表初始化聚合類型對象
- 15.4 禁止聚合類型使用用戶聲明的構造函數
- 15.3 擴展聚合類型的兼容問題
- 15.2 聚合類型的初始化
- 15.1 聚合類型的新定義
- 第15章 擴展的聚合類型(C++17 C++20)
- 14.5 總結
- 14.4 使用using打開強枚舉類型
- 14.3 列表初始化有底層類型枚舉對象
- 14.2 使用強枚舉類型
- 14.1 枚舉類型的弊端
- 第14章 強枚舉類型(C++11 C++17 C++20)
- 13.3 總結
- 13.2 使用繼承構造函數
- 13.1 繼承關系中構造函數的困局
- 第13章 繼承構造函數(C++11)
- 12.6 總結
- 12.5 委托參數較少的構造函數
- 12.4 捕獲委托構造函數的異常
- 12.3 委托模板構造函數
- 12.2 委托構造函數
- 12.1 冗余的構造函數
- 第12章 委托構造函數(C++11)
- 11.3 總結
- 11.2 使用非受限聯合類型
- 11.1 聯合類型在C++中的局限性
- 第11章 非受限聯合類型(C++11)
- 10.5 總結
- 10.4 explicit和=delete
- 10.3 顯式刪除的其他用法
- 10.2 顯式默認和顯式刪除
- 10.1 類的特殊成員函數
- 第10章 默認和刪除函數(C++11)
- 9.6 總結
- 9.5 指定初始化
- 9.4.2 列表初始化的優先級問題
- 9.4.1 隱式縮窄轉換問題
- 9.4 使用列表初始化的注意事項
- 9.3 std::initializer_list詳解
- 9.2 使用列表初始化
- 9.1 回顧變量初始化
- 第9章 列表初始化(C++11 C++20)
- 8.3 總結
- 8.2 位域的默認初始化
- 8.1 使用默認初始化
- 第8章 非靜態數據成員默認初始化(C++11 C++20)
- 7.12 總結
- 7.11 可構造和可賦值的無狀態lambda表達式
- 7.10 模板語法的泛型lambda表達式
- 7.9 捕獲[= this]
- 7.8 常量lambda表達式和捕獲*this
- 7.7 泛型lambda表達式
- 7.6 廣義捕獲
- 7.5 在STL中使用lambda表達式
- 7.4 無狀態lambda表達式
- 7.3 lambda表達式的實現原理
- 7.2.3 特殊的捕獲方法
- 7.2.2 捕獲值和捕獲引用
- 7.2.1 作用域
- 7.2 捕獲列表
- 7.1 lambda表達式語法
- 第7章 lambda表達式(C++11~C++20)
- 6.11 總結
- 6.10 針對局部變量和右值引用的隱式移動操作
- 6.9 完美轉發
- 6.8 萬能引用和引用折疊
- 6.7 將左值轉換為右值
- 6.6 值類別
- 6.5 移動語義
- 6.4 右值的性能優化空間
- 6.3 右值引用
- 6.2 左值引用
- 6.1 左值和右值
- 第6章 右值引用(C++11 C++17 C++20)
- 5.3 總結
- 5.2 推導函數模板返回類型
- 5.1 使用函數返回類型后置聲明函數
- 第5章 函數返回類型后置(C++11)
- 4.7 總結
- 4.6 decltype(auto)作為非類型模板形參占位符
- 4.5 decltype(auto)
- 4.4 cv限定符的推導
- 4.3 推導規則
- 4.2 使用decltype說明符
- 4.1 回顧typeof和typeid
- 第4章 decltype說明符(C++11~C++17)
- 3.7 總結
- 3.6 非類型模板形參占位符
- 3.5 lambda表達式中使用auto類型推導
- 3.4 返回類型推導
- 3.3 什么時候使用auto
- 3.2 推導規則
- 3.1 重新定義的auto關鍵字
- 第3章 auto占位符(C++11~C++17)
- 2.3 總結
- 2.2 嵌套命名空間的簡化語法
- 2.1 內聯命名空間的定義和使用
- 第2章 內聯和嵌套命名空間(C++11~C++20)
- 1.4 總結
- 1.3 char8_t字符類型
- 1.2.5 庫對新字符類型的支持
- 1.2.4 新字符串連接
- 1.2.3 wchar_t存在的問題
- 1.2.2 使用新字符類型char16_t和char32_t
- 1.2.1 字符集和編碼方法
- 1.2 新字符類型char16_t和char32_t
- 1.1 整數類型long long
- 第1章 新基礎類型(C++11~C++20)
- 關于異步社區和異步圖書
- 與我們聯系
- 提交錯誤信息
- 配套資源
- 資源與支持
- 致謝
- 面向讀者
- 讀完這本書你將收獲什么
- 本書特色
- 本書的組織結構
- 為什么要寫這本書
- 前言
- 推薦序
- 內容提要
- 版 權
- 版權信息
- 封面
- 封面
- 版權信息
- 版 權
- 內容提要
- 推薦序
- 前言
- 為什么要寫這本書
- 本書的組織結構
- 本書特色
- 讀完這本書你將收獲什么
- 面向讀者
- 致謝
- 資源與支持
- 配套資源
- 提交錯誤信息
- 與我們聯系
- 關于異步社區和異步圖書
- 第1章 新基礎類型(C++11~C++20)
- 1.1 整數類型long long
- 1.2 新字符類型char16_t和char32_t
- 1.2.1 字符集和編碼方法
- 1.2.2 使用新字符類型char16_t和char32_t
- 1.2.3 wchar_t存在的問題
- 1.2.4 新字符串連接
- 1.2.5 庫對新字符類型的支持
- 1.3 char8_t字符類型
- 1.4 總結
- 第2章 內聯和嵌套命名空間(C++11~C++20)
- 2.1 內聯命名空間的定義和使用
- 2.2 嵌套命名空間的簡化語法
- 2.3 總結
- 第3章 auto占位符(C++11~C++17)
- 3.1 重新定義的auto關鍵字
- 3.2 推導規則
- 3.3 什么時候使用auto
- 3.4 返回類型推導
- 3.5 lambda表達式中使用auto類型推導
- 3.6 非類型模板形參占位符
- 3.7 總結
- 第4章 decltype說明符(C++11~C++17)
- 4.1 回顧typeof和typeid
- 4.2 使用decltype說明符
- 4.3 推導規則
- 4.4 cv限定符的推導
- 4.5 decltype(auto)
- 4.6 decltype(auto)作為非類型模板形參占位符
- 4.7 總結
- 第5章 函數返回類型后置(C++11)
- 5.1 使用函數返回類型后置聲明函數
- 5.2 推導函數模板返回類型
- 5.3 總結
- 第6章 右值引用(C++11 C++17 C++20)
- 6.1 左值和右值
- 6.2 左值引用
- 6.3 右值引用
- 6.4 右值的性能優化空間
- 6.5 移動語義
- 6.6 值類別
- 6.7 將左值轉換為右值
- 6.8 萬能引用和引用折疊
- 6.9 完美轉發
- 6.10 針對局部變量和右值引用的隱式移動操作
- 6.11 總結
- 第7章 lambda表達式(C++11~C++20)
- 7.1 lambda表達式語法
- 7.2 捕獲列表
- 7.2.1 作用域
- 7.2.2 捕獲值和捕獲引用
- 7.2.3 特殊的捕獲方法
- 7.3 lambda表達式的實現原理
- 7.4 無狀態lambda表達式
- 7.5 在STL中使用lambda表達式
- 7.6 廣義捕獲
- 7.7 泛型lambda表達式
- 7.8 常量lambda表達式和捕獲*this
- 7.9 捕獲[= this]
- 7.10 模板語法的泛型lambda表達式
- 7.11 可構造和可賦值的無狀態lambda表達式
- 7.12 總結
- 第8章 非靜態數據成員默認初始化(C++11 C++20)
- 8.1 使用默認初始化
- 8.2 位域的默認初始化
- 8.3 總結
- 第9章 列表初始化(C++11 C++20)
- 9.1 回顧變量初始化
- 9.2 使用列表初始化
- 9.3 std::initializer_list詳解
- 9.4 使用列表初始化的注意事項
- 9.4.1 隱式縮窄轉換問題
- 9.4.2 列表初始化的優先級問題
- 9.5 指定初始化
- 9.6 總結
- 第10章 默認和刪除函數(C++11)
- 10.1 類的特殊成員函數
- 10.2 顯式默認和顯式刪除
- 10.3 顯式刪除的其他用法
- 10.4 explicit和=delete
- 10.5 總結
- 第11章 非受限聯合類型(C++11)
- 11.1 聯合類型在C++中的局限性
- 11.2 使用非受限聯合類型
- 11.3 總結
- 第12章 委托構造函數(C++11)
- 12.1 冗余的構造函數
- 12.2 委托構造函數
- 12.3 委托模板構造函數
- 12.4 捕獲委托構造函數的異常
- 12.5 委托參數較少的構造函數
- 12.6 總結
- 第13章 繼承構造函數(C++11)
- 13.1 繼承關系中構造函數的困局
- 13.2 使用繼承構造函數
- 13.3 總結
- 第14章 強枚舉類型(C++11 C++17 C++20)
- 14.1 枚舉類型的弊端
- 14.2 使用強枚舉類型
- 14.3 列表初始化有底層類型枚舉對象
- 14.4 使用using打開強枚舉類型
- 14.5 總結
- 第15章 擴展的聚合類型(C++17 C++20)
- 15.1 聚合類型的新定義
- 15.2 聚合類型的初始化
- 15.3 擴展聚合類型的兼容問題
- 15.4 禁止聚合類型使用用戶聲明的構造函數
- 15.5 使用帶小括號的列表初始化聚合類型對象
- 15.6 總結
- 第16章 override和final說明符(C++11)
- 16.1 重寫、重載和隱藏
- 16.2 重寫引發的問題
- 16.3 使用override說明符
- 16.4 使用final說明符
- 16.5 override和final說明符的特別之處
- 16.6 總結
- 第17章 基于范圍的for循環(C++11 C++17 C++20)
- 17.1 煩瑣的容器遍歷
- 17.2 基于范圍的for循環語法
- 17.3 begin和end函數不必返回相同類型
- 17.4 臨時范圍表達式的陷阱
- 17.5 實現一個支持基于范圍的for循環的類
- 17.6 總結
- 第18章 支持初始化語句的if和switch(C++17)
- 18.1 支持初始化語句的if
- 18.2 支持初始化語句的switch
- 18.3 總結
- 第19章 static_assert聲明
- 19.1 運行時斷言
- 19.2 靜態斷言的需求
- 19.3 靜態斷言
- 19.4 單參數static_assert
- 19.5 總結
- 第20章 結構化綁定(C++17 C++20)
- 20.1 使用結構化綁定
- 20.2 深入理解結構化綁定
- 20.3 結構化綁定的3種類型
- 20.3.1 綁定到原生數組
- 20.3.2 綁定到結構體和類對象
- 20.3.3 綁定到元組和類元組的對象
- 20.4 實現一個類元組類型
- 20.5 綁定的訪問權限問題
- 20.6 總結
- 第21章 noexcept關鍵字(C++11 C++17 C++20)
- 21.1 使用noexcept代替throw
- 21.2 用noexcept來解決移動構造問題
- 21.3 noexcept和throw()
- 21.4 默認使用noexcept的函數
- 21.5 使用noexcept的時機
- 21.6 將異常規范作為類型的一部分
- 21.7 總結
- 第22章 類型別名和別名模板(C++11 C++14)
- 22.1 類型別名
- 22.2 別名模板
- 22.3 總結
- 第23章 指針字面量nullptr(C++11)
- 23.1 零值整數字面量
- 23.2 nullptr關鍵字
- 23.3 總結
- 第24章 三向比較(C++20)
- 24.1 “太空飛船”(spaceship)運算符
- 24.2 三向比較的返回類型
- 24.2.1 std::strong_ordering
- 24.2.2 std::weak_ordering
- 24.2.3 std::partial_ordering
- 24.3 對基礎類型的支持
- 24.4 自動生成的比較運算符函數
- 24.5 兼容舊代碼
- 24.6 總結
- 第25章 線程局部存儲(C++11)
- 25.1 操作系統和編譯器對線程局部存儲的支持
- 25.2 thread_local說明符
- 25.3 總結
- 第26章 擴展的inline說明符(C++17)
- 26.1 定義非常量靜態成員變量的問題
- 26.2 使用inline說明符
- 26.3 總結
- 第27章 常量表達式(C++11~C++20)
- 27.1 常量的不確定性
- 27.2 constexpr值
- 27.3 constexpr函數
- 27.4 constexpr構造函數
- 27.5 對浮點的支持
- 27.6 C++14標準對常量表達式函數的增強
- 27.7 constexpr lambdas表達式
- 27.8 constexpr的內聯屬性
- 27.9 if constexpr
- 27.10 允許constexpr虛函數
- 27.11 允許在constexpr函數中出現Try-catch
- 27.12 允許在constexpr中進行平凡的默認初始化
- 27.13 允許在constexpr中更改聯合類型的有效成員
- 27.14 使用consteval聲明立即函數
- 27.15 使用constinit檢查常量初始化
- 27.16 判斷常量求值環境
- 27.17 總結
- 第28章 確定的表達式求值順序(C++17)
- 28.1 表達式求值順序的不確定性
- 28.2 表達式求值順序詳解
- 28.3 總結
- 第29章 字面量優化(C++11~C++17)
- 29.1 十六進制浮點字面量
- 29.2 二進制整數字面量
- 29.3 單引號作為整數分隔符
- 29.4 原生字符串字面量
- 29.5 用戶自定義字面量
- 29.6 總結
- 第30章 alignas和alignof(C++11 C++17)
- 30.1 不可忽視的數據對齊問題
- 30.2 C++11標準之前控制數據對齊的方法
- 30.3 使用alignof運算符
- 30.4 使用alignas說明符
- 30.5 其他關于對齊字節長度的支持
- 30.6 C++17中使用new分配指定對齊字節長度的對象
- 30.7 總結
- 第31章 屬性說明符和標準屬性(C++11~C++20)
- 31.1 GCC的屬性語法
- 31.2 MSVC的屬性語法
- 31.3 標準屬性說明符語法
- 31.4 使用using打開屬性的命名空間
- 31.5 標準屬性
- 31.5.1 noreturn
- 31.5.2 carries_dependency
- 31.5.3 deprecated
- 31.5.4 fallthrough
- 31.5.5 nodiscard
- 31.5.6 maybe_unused
- 31.5.7 likely和unlikely
- 31.5.8 no_unique_address
- 31.6 總結
- 第32章 新增預處理器和宏(C++17 C++20)
- 32.1 預處理器__has_include
- 32.2 特性測試宏
- 32.2.1 屬性特性測試宏
- 32.2.2 語言功能特性測試宏
- 32.2.3 標準庫功能特性測試宏
- 32.3 新增宏VA_OPT
- 32.4 總結
- 第33章 協程(C++20)
- 33.1 協程的使用方法
- 33.2 協程的實現原理
- 33.2.1 co_await運算符原理
- 33.2.2 co_yield運算符原理
- 33.2.3 co_return運算符原理
- 33.2.4 promise_type的其他功能
- 33.3 總結
- 第34章 基礎特性的其他優化(C++11~C++20)
- 34.1 顯式自定義類型轉換運算符(C++11)
- 34.2 關于std::launder()(C++17)
- 34.3 返回值優化(C++11~C++17)
- 34.4 允許按值進行默認比較(C++20)
- 34.5 支持new表達式推導數組長度(C++20)
- 34.6 允許數組轉換為未知范圍的數組(C++20)
- 34.7 在delete運算符函數中析構對象(C++20)
- 34.8 調用偽析構函數結束對象聲明周期(C++20)
- 34.9 修復const和默認復制構造函數不匹配造成無法編譯的問題(C++20)
- 34.10 不推薦使用volatile的情況(C++20)
- 34.11 不推薦在下標表達式中使用逗號運算符(C++20)
- 34.12 模塊(C++20)
- 34.13 總結
- 第35章 可變參數模板(C++11 C++17 C++20)
- 35.1 可變參數模板的概念和語法
- 35.2 形參包展開
- 35.3 sizeof...運算符
- 35.4 可變參數模板的遞歸計算
- 35.5 折疊表達式
- 35.6 一元折疊表達式中空參數包的特殊處理
- 35.7 using聲明中的包展開
- 35.8 lambda表達式初始化捕獲的包展開
- 35.9 總結
- 第36章 typename優化(C++17 C++20)
- 36.1 允許使用typename聲明模板形參
- 36.2 減少typename使用的必要性
- 36.3 總結
- 第37章 模板參數優化(C++11 C++17 C++20)
- 37.1 允許常量求值作為所有非類型模板的實參
- 37.2 允許局部和匿名類型作為模板實參
- 37.3 允許函數模板的默認模板參數
- 37.4 函數模板添加到ADL查找規則
- 37.5 允許非類型模板形參中的字面量類類型
- 37.6 擴展的模板參數匹配規則
- 37.7 總結
- 第38章 類模板的模板實參推導(C++17 C++20)
- 38.1 通過初始化構造推導類模板的模板實參
- 38.2 拷貝初始化優先
- 38.3 lambda類型的用途
- 38.4 別名模板的類模板實參推導
- 38.5 聚合類型的類模板實參推導
- 38.6 總結
- 第39章 用戶自定義推導指引(C++17)
- 39.1 使用自定義推導指引推導模板實例
- 39.2 聚合類型類模板的推導指引
- 39.3 總結
- 第40章 SFINAE(C++11)
- 40.1 替換失敗和編譯錯誤
- 40.2 SFINAE規則詳解
- 40.3 總結
- 第41章 概念和約束(C++20)
- 41.1 使用std::enable_if約束模板
- 41.2 概念的背景介紹
- 41.3 使用concept和約束表達式定義概念
- 41.4 requires子句和約束檢查順序
- 41.5 原子約束
- 41.6 requires表達式
- 41.6.1 簡單要求
- 41.6.2 類型要求
- 41.6.3 復合要求
- 41.6.4 嵌套要求
- 41.7 約束可變參數模板
- 41.8 約束類模板特化
- 41.9 約束auto
- 41.10 總結
- 第42章 模板特性的其他優化(C++11 C++14)
- 42.1 外部模板(C++11)
- 42.2 連續右尖括號的解析優化(C++11)
- 42.3 friend聲明模板形參(C++11)
- 42.4 變量模板(C++14)
- 42.5 explicit(bool)
- 42.6 總結
- 附 錄 特性章節對照表 更新時間:2021-09-27 17:50:52