C++20 高級編程

羅能

  • 出版商: 機械工業
  • 出版日期: 2022-07-01
  • 售價: $654
  • 貴賓價: 9.5$621
  • 語言: 簡體中文
  • 頁數: 312
  • 裝訂: 平裝
  • ISBN: 7111708229
  • ISBN-13: 9787111708223
  • 相關分類: C++ 程式語言
  • 立即出貨

買這商品的人也買了...

商品描述

C++20高級編程主要講解C++庫、框架開發中的高級編程技術,以及*新的C++20標準特性。
全書共10章,分別為:類型與對象、編譯時多態、概念約束、元編程介紹、
模板元編程、constexpr元編程、Ranges標準庫、協程、模塊、綜合運用。
其中C++20的四大特性獨立成章,一些小的特性則貫穿於全書,
其他章節則探討了面向對象、元編程、函數式編程、並發編程等話題。
C++20高級編程針對以上新特性準備了豐富的代碼樣例,
並隨書附贈全部案例源碼。相信通過這些代碼,讀者很容易掌握這些新特性。
作為一本講解C++高級編程的書,本書還探討了很多元編程話題,這是作為庫開發必不可少的技能,
它們也將隨著C++的演進而不斷演進,大大提升庫開發者的編程體驗,
尤其是近年來C++的標準提案經歷了從模板元編程向constexpr元編程轉換的過程。
C++20高級編程適合中高級C++程序員、架構師、框架開發者閱讀,
閱讀前*好能夠掌握一些現代C++的知識。
對於想要係統性學習C++20並進階C++技能的讀者,一定不要錯過本書。

目錄大綱


前言
第1章類型與對象/
1.1類型的作用/
1.2現代C++中對類型處理能力的演進/
1.3值類別(value category)/
1.3.1理解左值與右值/
1.3.2函數形參何時使用何種引用/
1.3.3轉發引用與完美轉發/
1.4類型推導/
1.4.1auto類型推導/
1.4.2decltype類型推導/
1.4.3decltype(auto)類型推導/
1.4.4std::declval元函數/
1.4.5類模板參數推導(CTAD)/
1.5函數對象/
1.5.1定義函數對象/
1.5.2lambda表達式/
1.5.3函數適配器/
1.6運行時多態/
1.6.1運行時多態手段/
1.6.2subtype多態vsadhoc多態/
1.7調試手段/
1.7.1編譯時打印方案/
1.7.2運行時打印方案/
1.7.3使用外部工具/

第2章編譯時多態/
2.1函數重載機制/
2.1.1名稱查找/
2.1.2模板函數處理/
2.1.3重載決議/
2.1.4注意事項/
2.1.5再談SFINAE/
2.2類型特徵(Type traits)/
2.2.1Type traits謂詞與變量模板/
2.2.2類型變換/
2.2.3輔助類/
2.2.4空基類優化/
2.2.5實現Type traits/
2.2.6類型內省/
2.2.7enable_if元函數/
2.2.8標籤分發/
2.2.9if constexpr/
2.2.10void_t元函數/
2.3奇異遞歸模板/
2.3.1代碼復用/
2.3.2靜態多態/
2.3.3enable_shared_from_this模板類/
2.4表達式模板/
2.4.1標量延遲計算/
2.4.2向量延遲計算/
2.4.3提高表達力/
2.5注意事項/

第3章概念約束/
3.1定義概念/
3.2requires表達式/
3.2.1簡單要求/
3.2.2類型要求/
3.2.3複合要求/
3.2.4嵌套要求/
3.2.5注意事項/
3.3requires子句/
3.4約束的偏序規則/
3.4.1約束表達式歸一化/
3.4.2簡單約束的包含關係/
3.4.3一般約束的包含關係/
3.4.4using類型別名與concept表達式別名/
3.5概念標準庫<concepts>/
3.5.1same_as(與某類相同)/
3.5.2derived_from(派生自某類)/
3.5.3convertible_to(可轉換為某類)/
3.5.4算術概念/
3.5.5值概念/
3.5.6invocable(可調用的)/
3.6綜合運用之擴展transform變換算法/
3.7注意事項/

第4章元編程介紹/
4.1元編程歷史/
4.2模板歷史/
4.3constexpr歷史/
4.4元編程能力與應用/
4.4.1零成本抽象/
4.4.2值計算/
4.4.3類型計算/
4.4.4編譯時多態/
4.4.5類型安全/
4.4.6泛型編程/
4.4.7靜態反射/
4.4.8內部領域特定語言EDSL/

第5章模板元編程/
5.1模板vs宏/
5.1.1泛型函數/
5.1.2泛型容器/
5.2模板類元函數/
5.2.1數值計算/
5.2.2類型計算/
5.3TypeList/
5.3.1基本方法/
5.3.2高階函數/
5.3.3常用算法/
5.4綜合運用/
5.4.1全局最短路徑/
5.4.2KV數據表/
5.4.3注意事項/

第6章constexpr元編程/
6.1constexpr變量/
6.2constinit初始化/
6.3折疊表達式/
6.4constexpr函數/
6.4.1consteval/
6.4.2編譯時內存分配/
6.4.3編譯時虛函數/
6.4.4is_constant_evaluated/
6.4.5停機問題/
6.4.6檢測未定義行為/
6.5非類型模板參數/
6.6constexpr與TypeList/
6.6.1類型、值的包裹類/
6.6.2高階函數/
6.6.3管道操作符/
6.6.4重構KV數據表/
6.7綜合運用之編譯時字符串操作/

第7章Ranges標準庫/
7.1range訪問操作/
7.1.1ranges::begin/
7.1.2ranges::end/
7.1.3ranges::size/
7.1.4ranges::empty/
7.1.5ranges::data/
7.2range相關概念/
7.2.1range/
7.2.2borrowed_range/
7.2.3sized_range/
7.2.4view/
7.2.5其他概念/
7.3range實用組件/
7.3.1view_interface/
7.3.2subrange/
7.3.3ref_view/
7.4range工廠/
7.4.1empty_view/
7.4.2single_view/
7.4.3iota_view/
7.4.4istream_view/
7.5range適配器/
7.5.1適配器對象/
7.5.2all/
7.5.3filter/
7.5.4transform/
7.5.5take/
7.5.6take_while/
7.5.7drop/
7.5.8drop_while/
7.5.9join/
7.5.10split/
7.5.11common/
7.5.12reverse/
7.5.13elements/
7.6其他改善/
7.6.1迭代器概念/
7.6.2算法接口改善/
7.7綜合運用/
7.7.1矩陣乘法/
7.7.2日曆程序/
7.7.3注意事項/

第8章協程/
8.1協程的起源/
8.2協程初探/
8.3函數與協程理論/
8.4揭秘co_await表達式/
8.4.1表達式轉換過程/
8.4.2Awaiter對象/
8.4.3標準庫中的Awaiter/
8.5揭秘Promise概念/
8.5.1協程句柄/
8.5.2Promise概念/
8.6綜合運用/
8.6.1生成器/
8.6.2為已有類型非侵入式擴展協程接口/
8.6.3利用協程機制簡化錯誤處理/
8.6.4注意事項/

第9章模塊/
9.1Hello World模塊/
9.2定義一個模塊/
9.3模塊分區/
9.4私有片段/
9.5模塊樣板文件/
9.6注意事項/

第10章綜合運用/
10.1配置文件反序列化框架/
10.1.1背景介紹/
10.1.2標準的缺失,靜態反射機制/
10.1.3元數據設計/
10.1.4REPEAT宏/
10.1.5結構體遍歷/
10.1.6編譯時多態/
10.1.7反序列化數據類型/
10.2AsyncIO協程庫/
10.2.1背景介紹/
10.2.2性能測試/
10.2.3事件驅動模型/
10.2.4Handle類設計/
10.2.5調度器設計/
10.2.6Task協程設計/
10.2.7實現一些協程/
10.2.8注意事項/
附錄/
附錄A概念約束歷史/
參考文獻/