C++17 带来了大量实用特性,让代码更简洁、更安全。
计划中的内容
语言核心
- 结构化绑定 — auto [x, y] = pair 的魔法
- if constexpr — 编译期条件分支
- if / switch 初始化语句 — if (auto it = ...; it != end)
- 类模板参数推导(CTAD) — 写容器不必重复类型
- std::optional — 优雅处理可能为空的值
- std::variant — 类型安全的 union
- std::string_view — 零拷贝字符串视图
- 折叠表达式 — 简化变参模板
- 内联变量 — 头文件中定义变量
- [nodiscard] — 别忘了处理返回值
- [[maybe_unused]] / [fallthrough] — 让意图更明确
- 保证拷贝省略(RVO) — 有些临时对象真的“不存在”
- 改进的求值顺序与表达式规则 — 少踩一些“看起来没问题”的坑
标准库
- std::any — “能装任何类型”的盒子(以及代价)
- std::filesystem — 终于有了官方路径与文件系统库
- std::byte — 把“字节”从 char 里解放出来
- 并行算法与执行策略 — std::execution::par 的正确打开方式
- std::shared_mutex / std::scoped_lock — 更顺手的并发原语
- 关联容器 node handle(extract / merge) — 不拷贝地搬节点
- std::pmr(多态内存资源) — 把 allocator 这事做得更工程
- std::apply / std::invoke — tuple 调用与统一调用入口
- std::from_chars / to_chars — 更快、更可控的数字解析
- std::clamp / std::gcd / std::lcm — 实用小工具进了标准库