C++11出来之后,到目前为止官方都做了些什么更新?
在 C++ 的历史上,C++11 是一个分水岭。它把这门语言从"写起来像增强版 C"推向了"现代编程语言"的行列。
但故事并没有停在 2011。事实上,从 C++11 开始,C++ 标准委员会(ISO C++ Committee)决定:以后每三年发布一次新标准。
那么,C++11 之后到现在,官方到底做了哪些更新?
1. C++14:小修小补(2014)
如果说 C++11 是大改版,那么 C++14 更像是官方的"修正补丁" 。
主要更新:
-
泛型 lambda
arduinoauto lambda = [](auto x, auto y) { return x + y; };
-
返回值类型推导 (函数支持
auto
返回)。 -
二进制字面量
0b1010
。 -
std::make_unique
,终于补上了unique_ptr
的方便工厂函数。
2. C++17:标准库大加强(2017)
到了 C++17,语言和库又迎来一波扩展:
-
结构化绑定
scssauto [key, value] = mymap.begin();
-
if constexpr
模板元编程的救星,可以在编译期选择分支。
-
inline
变量终于不用头文件里搞奇怪的
extern
了。 -
std::optional
/std::variant
/std::any
标准化"可选值""类型安全联合体""任意类型"。
-
std::string_view
字符串零拷贝视图,性能优化神器。
-
并行算法
std::sort
等 STL 算法可以并行执行。
总体感觉:更现代,库更强大。其他没啥了。
3. C++20:较大更新(2020)
C++20 被很多人称为 "继 C++11 之后最重要的更新" 。
-
Concepts(概念)
给模板加"约束",可读性和错误提示友好多了。
rtemplate<typename T> requires std::integral<T> T add(T a, T b) { return a + b; }
-
Ranges(范围库)
直接写"声明式算法":
cfor (auto i : vec | std::views::filter([](int x){ return x > 10; })) std::cout << i << std::endl;
-
协程(Coroutines)
co_await
/co_yield
语法,异步编程更自然。 -
Modules(模块化)
这个很重要,头文件不再是大杂烩了,编译速度和依赖管理大幅改善。
-
constexpr
更强可以在编译期执行更多逻辑。
-
三路比较
<=>
太空船操作符,写比较运算更简洁。

4. C++23:继续迭代(2023)
最新的标准是 C++23(已经正式发布)。它没有像 C++20 那样有大突破,但仍然在打磨语言:
std::expected
(比optional
更好地处理返回值错误)。- 多维下标运算符。
- 范围 for 的新特性(支持初始化器)。
- 更多标准库算法和范围库增强。
- 内存模型改进,并发支持更完善。
5. C++26 在路上
都2025了,那么C++26也不远了吧?我根据前几次更新的惯性来猜测一下,可能带来:
- 更成熟的 反射(Reflection) 支持。
- Pattern Matching(模式匹配) ,类似 Rust/Scala 的写法。
- 协程生态进一步完善。

拭目以待喽~~