展开全部

主编推荐语

C++高级编程技术与C++20标准特性全解析,适合中高级程序员、架构师和框架开发者阅读。

内容简介

本书主要讲解C++库、框架开发中的高级编程技术,以及最新的C++20标准特性。全书共10章,分别为:类型与对象、编译时多态、概念约束、元编程介绍、模板元编程、constexpr 元编程、Ranges 标准库、协程、模块、综合运用。其中 C++20 的四大特性独立成章,一些小的特性则贯穿于全书,其他章节则探讨了面向对象、元编程、函数式编程、并发编程等话题。本书针对以上新特性准备了丰富的代码样例,相信通过这些代码读者很容易掌握这些新特性。作为一本讲解 C++ 高级编程的书,本书还探讨了很多元编程话题,这是作为库开发必不可少的技能,它们也将随着 C++ 的演进而不断演进,大大提升库开发者的编程体验,尤其是近年来 C++ 的标准提案经历了从模板元编程向 constexpr 元编程转换的过程。本书适合中高级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.1 auto类型推导
  • 1.4.2 decltype类型推导
  • 1.4.3 decltype(auto)类型推导
  • 1.4.4 std::declval元函数
  • 1.4.5 类模板参数推导(CTAD)
  • 1.5 函数对象
  • 1.5.1 定义函数对象
  • 1.5.2 lambda表达式
  • 1.5.3 函数适配器
  • 1.6 运行时多态
  • 1.6.1 运行时多态手段
  • 1.6.2 subtype多态vs ad-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.1 Type 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.9 if constexpr
  • 2.2.10 void_t元函数
  • 2.3 奇异递归模板
  • 2.3.1 代码复用
  • 2.3.2 静态多态
  • 2.3.3 enable_shared_from_this模板类
  • 2.4 表达式模板
  • 2.4.1 标量延迟计算
  • 2.4.2 向量延迟计算
  • 2.4.3 提高表达力
  • 2.5 注意事项
  • 第3章 概念约束
  • 3.1 定义概念
  • 3.2 requires表达式
  • 3.2.1 简单要求
  • 3.2.2 类型要求
  • 3.2.3 复合要求
  • 3.2.4 嵌套要求
  • 3.2.5 注意事项
  • 3.3 requires子句
  • 3.4 约束的偏序规则
  • 3.4.1 约束表达式归一化
  • 3.4.2 简单约束的包含关系
  • 3.4.3 一般约束的包含关系
  • 3.4.4 using类型别名与concept表达式别名
  • 3.5 概念标准库<concepts>
  • 3.5.1 same_as(与某类相同)
  • 3.5.2 derived_from(派生自某类)
  • 3.5.3 convertible_to(可转换为某类)
  • 3.5.4 算术概念
  • 3.5.5 值概念
  • 3.5.6 invocable(可调用的)
  • 3.6 综合运用之扩展transform变换算法
  • 3.7 注意事项
  • 第4章 元编程介绍
  • 4.1 元编程历史
  • 4.2 模板历史
  • 4.3 constexpr历史
  • 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.3 TypeList
  • 5.3.1 基本方法
  • 5.3.2 高阶函数
  • 5.3.3 常用算法
  • 5.4 综合运用
  • 5.4.1 全局最短路径
  • 5.4.2 KV数据表
  • 5.4.3 注意事项
  • 第6章 constexpr元编程
  • 6.1 constexpr变量
  • 6.2constinit初始化
  • 6.3 折叠表达式
  • 6.4 constexpr函数
  • 6.4.1 consteval
  • 6.4.2 编译时内存分配
  • 6.4.3 编译时虚函数
  • 6.4.4 is_constant_evaluated
  • 6.4.5 停机问题
  • 6.4.6 检测未定义行为
  • 6.5 非类型模板参数
  • 6.6 constexpr与TypeList
  • 6.6.1 类型、值的包裹类
  • 6.6.2 高阶函数
  • 6.6.3 管道操作符
  • 6.6.4 重构KV数据表
  • 6.7 综合运用之编译时字符串操作
  • 第7章 Ranges标准库
  • 7.1 range访问操作
  • 7.1.1 ranges::begin
  • 7.1.2 ranges::end
  • 7.1.3 ranges::size
  • 7.1.4 ranges::empty
  • 7.1.5 ranges::data
  • 7.2 range相关概念
  • 7.2.1 range
  • 7.2.2 borrowed_range
  • 7.2.3 sized_range
  • 7.2.4 view
  • 7.2.5 其他概念
  • 7.3 range实用组件
  • 7.3.1 view_interface
  • 7.3.2 subrange
  • 7.3.3 ref_view
  • 7.4 range工厂
  • 7.4.1 empty_view
  • 7.4.2 single_view
  • 7.4.3 iota_view
  • 7.4.4 istream_view
  • 7.5 range适配器
  • 7.5.1 适配器对象
  • 7.5.2 all
  • 7.5.3 filter
  • 7.5.4 transform
  • 7.5.5 take
  • 7.5.6 take_while
  • 7.5.7 drop
  • 7.5.8 drop_while
  • 7.5.9 join
  • 7.5.10 split
  • 7.5.11 common
  • 7.5.12 reverse
  • 7.5.13 elements
  • 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.2 Awaiter对象
  • 8.4.3 标准库中的Awaiter
  • 8.5 揭秘Promise概念
  • 8.5.1 协程句柄
  • 8.5.2 Promise概念
  • 8.6 综合运用
  • 8.6.1 生成器
  • 8.6.2 为已有类型非侵入式扩展协程接口
  • 8.6.3 利用协程机制简化错误处理
  • 8.6.4 注意事项
  • 第9章 模块
  • 9.1 Hello 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.4 REPEAT宏
  • 10.1.5 结构体遍历
  • 10.1.6 编译时多态
  • 10.1.7 反序列化数据类型
  • 10.2 AsyncIO协程库
  • 10.2.1 背景介绍
  • 10.2.2 性能测试
  • 10.2.3 事件驱动模型
  • 10.2.4 Handle类设计
  • 10.2.5 调度器设计
  • 10.2.6 Task协程设计
  • 10.2.7 实现一些协程
  • 10.2.8 注意事项
  • 附录
  • 附录A 概念约束历史
  • 参考文献
  • 后折页
  • 封底
展开全部

评分及书评

尚无评分
目前还没人评分

出版方

机械工业出版社

机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。