| 版本 | 性能相关新增组件 | 安全性相关新增组件 |
|---|---|---|
| C++11 | 1. 右值引用 & 移动语义 :减少深拷贝,提升对象传递/返回效率 2. 完美转发(Perfect Forwarding) :保留参数值类别,避免不必要拷贝 3. emplace系列函数 (如vector::emplace_back):直接在容器中构造对象,消除临时对象 4. constexpr(基础版) :编译期计算常量表达式,减少运行时开销 5. alignas/alignof :控制内存对齐,优化缓存访问 6. lambda表达式:简化函数对象,降低函数调用开销 |
1. nullptr :替代NULL,消除空指针歧义 2. 智能指针 (unique_ptr/shared_ptr/weak_ptr):自动管理内存,防泄漏/悬垂指针 3. auto类型推导 :减少手动类型错误,避免隐式转换风险 4. 范围for循环 :避免迭代器越界,简化遍历 5. override/final :显式标记重写/禁止重写,防误改基类接口 6. noexcept :声明无异常,辅助编译器优化+明确异常边界 7. static_assert:编译期断言,提前暴露错误 |
| C++14 | 1. constexpr扩展 :支持循环、局部变量、if等,更多编译期计算 2. 返回类型推导(auto返回) :简化代码,助力编译器优化 3. 泛型lambda (支持auto参数):简化泛型代码,减少模板实例化开销 |
1. make_unique :统一创建unique_ptr,补全C++11的内存安全工具 2. [[deprecated]]属性 :标记过时API,提醒避免误用 3. [[maybe_unused]]属性:抑制未使用变量警告,防误删有用代码 |
| C++17 | 1. 并行算法 (如std::sort(std::execution::par)):利用多核加速计算 2. std::string_view :轻量级字符串视图,避免字符串拷贝(如substr返回视图) 3. if constexpr :编译期条件判断,消除无效分支 4. 折叠表达式(Fold Expressions) :简化可变参数模板展开,减少代码冗余 5. 内联变量(Inline Variables) :头文件定义变量,避免ODR问题+优化链接 6. 保证复制省略(Guaranteed Copy Elision) :强制省略不必要的拷贝/移动 7. std::byte :类型安全的字节表示,替代char |
1. std::optional :显式表示空值,避免空指针解引用 2. std::variant :类型安全的联合体,替代union防未定义行为 3. std::any :类型安全的任意值容器,替代void* 4. [[nodiscard]]属性 :强制检查返回值(如错误码),防忽略重要结果 5. std::filesystem:安全的文件路径操作,避免字符串拼接错误 |
| C++20 | 1. 概念(Concepts) :编译期约束模板参数,减少实例化错误+提升编译/运行效率 2. 协程(Coroutines) :高效异步模型,减少回调开销+上下文切换 3. 范围(Ranges) :简洁高效的范围操作(如ranges::sort),支持惰性求值 4. consteval/constinit :强制编译期计算(consteval)或初始化(constinit) 5. std::atomic_ref :对已有对象做原子操作,无需包装为atomic,更高效 6. 三路比较运算符(<=>) :自动生成所有比较操作,减少重复代码 7. 模块(Modules):替代头文件包含,减少预处理开销+提升编译速度 |
1. std::span :安全的数组视图,防越界访问(类似string_view但针对数组) 2. std::jthread :自动join的线程,析构时自动等待,防资源泄漏 3. 概念(Concepts) :编译期检查模板参数合法性,减少运行时错误 4. 范围(Ranges):安全的范围操作,避免迭代器失效 |
说明:
- 性能组件主要关注:减少运行时开销(如拷贝、分支)、利用硬件(多核、缓存)、编译期优化(constexpr、折叠表达式)、高效抽象(协程、Ranges)。
- 安全组件主要关注:内存安全(智能指针、span)、类型安全(optional、variant)、错误预防(nullptr、[[nodiscard]])、资源管理(jthread、filesystem)。
- 部分特性可能同时影响两者(如
concepts既提升编译效率又防模板误用),此处先按主要目标归类。