第 10 章 展望:C++20 简介
概念(Concepts)是对 C++ 模板编程的进一步增强扩展。简单来说,概念是一种编译期的特性, 它能够让编译器在编译期时对模板参数进行判断,从而大幅度增强我们在 C++ 中模板编程的体验。 使用模板进行编程时候我们经常会遇到各种令人发指的错误, 这是因为到目前为止我们始终不能够对模板参数进行检查与限制。 举例而言,下面简单的两行代码会造成大量的几乎不可读的编译错误:
而这段代码出现错误的根本原因在于, 对排序容器必须提供随机迭代器,否则就不能使用,而我们知道 是不支持随机访问的。 用概念的语言来说就是: 中的迭代器不满足 中随机迭代器这个概念的约束(Constraint)。 在引入概念后,我们就可以这样对模板参数进行约束:
缩写为:
甚至于直接将其作为类型来使用:
TODO: https://godbolt.org/z/9liFPD
模块
TODO:
合约
TODO:
TODO:
协程
事务内存
TODO:
总的来说,终于在 C++20 中看到 Concepts/Ranges/Modules 这些令人兴奋的特性, 这对于一门已经三十多岁『高龄』的编程语言,依然是充满魅力的。
| 上一章 |