目录
摘要.................................................................................................................................................................i
现代 C 的文艺复兴........................................................................................................................... iii
译序............................................................................................................................................................. vii
目录...............................................................................................................................................................ix
1. 前言...........................................................................................................................................................1
1.1 年表...............................................................................................................................................2
1.2 概述...............................................................................................................................................4
2. 背景:C 的 1979–2006...............................................................................................................5
2.1 第一个十年................................................................................................................................5
2.2 第二个十年................................................................................................................................8
2.2.1 语言特性........................................................................................................................8
2.2.2 标准库组件................................................................................................................10
2.3 C 的 2006............................................................................................................................12
2.4 其他语言..................................................................................................................................15
3. C 标准委员会................................................................................................................................19
3.1 标准............................................................................................................................................19
3.2 组织............................................................................................................................................20
3.3 对设计的影响........................................................................................................................24
3.4 提案检查清单........................................................................................................................32
4. C 11:感觉像是门新语言.........................................................................................................35
4.1 C 11:并发支持................................................................................................................37
4.1.1 内存模型.....................................................................................................................38
4.1.2 线程和锁.....................................................................................................................40
4.1.3 期值(future)........................................................................................................42
4.2 C 11:简化使用................................................................................................................45
4.2.1 auto 和 decltype.................................................................................................46
4.2.2 范围 for.....................................................................................................................50
4.2.3 移动语义.....................................................................................................................51
4.2.4 资源管理指针...........................................................................................................54
4.2.5 统一初始化................................................................................................................56
4.2.6 nullptr .....................................................................................................................59
4.2.7 constexpr 函数.....................................................................................................60
4.2.8 用户定义字面量......................................................................................................62目录
x
4.2.9 原始字符串字面量.................................................................................................63
4.2.10 属性............................................................................................................................63
4.2.11 垃圾收集..................................................................................................................64
4.3 C 11:改进对泛型编程的支持 ..................................................................................65
4.3.1 lambda 表达式.........................................................................................................65
4.3.2 变参模板.....................................................................................................................69
4.3.3 别名..............................................................................................................................70
4.3.4 tuple...........................................................................................................................72
4.4 C 11:提高静态类型安全............................................................................................74
4.5 C 11:支持对库的开发.................................................................................................74
4.5.1 实现技巧.....................................................................................................................75
4.5.2 元编程支持................................................................................................................76
4.5.3 noexcept 规约........................................................................................................76
4.6 C 11:标准库组件...........................................................................................................78
5. C 14:完成 C 11.......................................................................................................................81
5.1 数字分隔符.............................................................................................................................82
5.2 变量模板..................................................................................................................................82
5.3 函数返回类型推导...............................................................................................................83
5.4 泛型 lambda 表达式 ...........................................................................................................83
5.5 constexpr 函数中的局部变量 .....................................................................................84
6. 概念........................................................................................................................................................87
6.1 概念的早期历史...................................................................................................................88
6.2 C 0x 概念 .............................................................................................................................90
6.2.1 概念定义.....................................................................................................................92
6.2.2 概念使用.....................................................................................................................93
6.2.3 概念映射.....................................................................................................................93
6.2.4 定义检查.....................................................................................................................94
6.2.5 教训..............................................................................................................................95
6.2.6 哪里出错了?...........................................................................................................97
6.3 Concepts TS............................................................................................................................99
6.3.1 定义检查.................................................................................................................. 101
6.3.2 概念使用.................................................................................................................. 103
6.3.3 概念的定义............................................................................................................. 104
6.3.4 概念名称引导器................................................................................................... 105
6.3.5 概念和类型............................................................................................................. 106在拥挤和变化的世界中茁壮成长:C 2006–2020
xi
6.3.6 改进........................................................................................................................... 108
6.3.7 等效语法.................................................................................................................. 109
6.3.8 为什么在 C 17 中没有概念?..................................................................... 110
6.4 C 20 概念.......................................................................................................................... 112
6.5 概念的命名.......................................................................................................................... 114
7. 错误处理........................................................................................................................................... 115
7.1 背景......................................................................................................................................... 115
7.2 现实中的问题..................................................................................................................... 116
7.3 noexcept 规约.................................................................................................................. 119
7.4 类型系统的支持................................................................................................................ 120
7.5 回归基础............................................................................................................................... 120
8. C 17:大海迷航......................................................................................................................... 123
8.1 构造函数模板参数推导.................................................................................................. 124
8.2 结构化绑定.......................................................................................................................... 125
8.3 variant、optional 和 any ...................................................................................... 128
8.4 并发......................................................................................................................................... 130
8.5 并行 STL................................................................................................................................ 131
8.6 文件系统............................................................................................................................... 132
8.7 条件的显式测试................................................................................................................ 133
8.8 C 17 中未包含的提议.................................................................................................. 134
8.8.1 网络库 ...................................................................................................................... 134
8.8.2 点运算符.................................................................................................................. 135
8.8.3 统一调用语法........................................................................................................ 136
8.8.4 缺省比较.................................................................................................................. 138
9. C 20:方向之争......................................................................................................................... 141
9.1 设计原则............................................................................................................................... 141
9.2 我的 C 17 清单............................................................................................................... 143
9.3 C 20 特性.......................................................................................................................... 144
9.3.1 模块........................................................................................................................... 145
9.3.2 协程........................................................................................................................... 148
9.3.3 编译期计算支持................................................................................................... 152
9.3.4 <=>............................................................................................................................. 154
9.3.5 范围........................................................................................................................... 154
9.3.6 日期和时区............................................................................................................. 155
9.3.7 格式化 ...................................................................................................................... 156目录
xii
9.3.8 跨度........................................................................................................................... 157
9.4 并发......................................................................................................................................... 159
9.5 次要特性............................................................................................................................... 160
9.6 进行中的工作..................................................................................................................... 161
9.6.1 契约........................................................................................................................... 161
9.6.2 静态反射.................................................................................................................. 165
10. 2020 年的 C ............................................................................................................................. 169
10.1 C 用来做什么?......................................................................................................... 169
10.2 C 社区............................................................................................................................. 171
10.3 教育和研究 ....................................................................................................................... 172
10.4 工具...................................................................................................................................... 174
10.5 编程风格............................................................................................................................ 175
10.5.1 泛型编程............................................................................................................... 176
10.5.2 元编程.................................................................................................................... 176
10.6 编码指南............................................................................................................................ 178
10.6.1 一般方法............................................................................................................... 179
10.6.2 静态分析............................................................................................................... 180
11. 回顾 .................................................................................................................................................. 183
11.1 C 模型............................................................................................................................. 183
11.2 技术上的成功................................................................................................................... 184
11.3 需要工作的领域.............................................................................................................. 185
11.4 教训...................................................................................................................................... 186
11.5 未来...................................................................................................................................... 188
致谢.......................................................................................................................................................... 191
网友评论
我要评论