C++新特性对比说明(11、14、17、20、23)
·
C++核心理念演变
- C++11: 现代化的开端。像一门“新语言”,专注于易用性、性能和安全(RAII、智能指针)【C++11新特性(总结)】。
- C++14: 完善C++11。是C++11的增量更新,修复并完善了C++11的许多特性。
- C++17: 实用性与库的增强。提供了许多开箱即用的特性和库,减少了对Boost等外部库的依赖。【C++17新特性(总结)】
- C++20: 变革性更新。影响堪比C++11,引入了模块、概念、协程等改变编程范式的重大特性。
- C++23: C++20的完善与增量。目标是填补C++20的空白,提供更多“补齐”的特性。
C++ 现代版本新特性对比表1
类别 特性 C++11 C++14 C++17 C++20 C++23 核心语言 类型推导 auto(变量)decltype函数返回类型推导
泛型Lambda的auto参数类模板参数推导 (CTAD) template<auto>缩写函数模板 auto用于函数参数
概念约束的autoauto(x)衰减拷贝auto{}推导Lambda 基本Lambda表达式
捕获列表泛型Lambda
Lambda捕获表达式
广义捕获constexprLambda
Lambda捕获*this无状态Lambda可默认构造
模板Lambda
可构造可赋值Lambda属性
显式对象参数控制流 基于范围的for循环 - if/switch初始化语句
内联变量范围for循环初始化 consteval立即函数if consteval
属性[[assume]]对象模型 移动语义
右值引用=default,=delete- 保证的拷贝消除
强制省略拷贝三路比较运算符 <=>
聚合体推导指引显式对象参数 this auto常量求值 constexpr(函数)constexpr(简单类型)constexpr放松限制
变量模板constexpr ifconstexprLambda
内联变量constevalconstinitconstexpr虚函数constexpr算法放松 constexpr限制constexpr数学函数模板编程 可变参数模板
别名模板
外部模板变量模板 折叠表达式
模板参数推导指引template<auto>概念 (Concepts)
requires表达式
模板参数列表缩写字面量类型参数
模板元编程增强其他语法 nullptrenum classfinaloverride
属性语法数字分隔符 '
二进制字面量0b结构化绑定
内联变量
嵌套命名空间定义模块(Modules)
协程(Coroutines)
三路比较<=>
指定初始化std::float16_tstd::bfloat16_t
无名占位符标准库 智能指针 unique_ptrshared_ptrweak_ptrmake_sharedmake_uniqueshared_ptr控制块访问weak_ptr的lock()优化原子智能指针 make_shared对于数组智能指针增强 容器与视图 无序容器 std::arraystd::forward_list容器性能优化 string_viewanyoptionalvariantspan
范围视图flat_mapflat_set(C++23)flat_mapflat_setmdspan实用工具 tuplefunctionbindregexchronointeger_sequenceexchangeoptionalvariantanyfilesystemapplyformatsource_locationspanjthreadexpectedgenerator并发编程 threadmutexfutureasync
原子操作原子操作增强 shared_mutex
并行STL算法scoped_lockatomic_shared_ptrjthreadlatchbarriersemaphore
原子等待原子视图
信号量增强算法 新算法( all_of,copy_if等)
移动感知算法算法性能优化 搜索/排序算法增强
采样算法
并行执行策略Ranges库
范围算法
投影(Projections)
约束算法范围增强
新范围适配器format格式化算法
C++ 现代版本新特性对比表2
类别 子类别 特性 C++11 C++14 C++17 C++20 C++23 核心语言 类型系统 auto类型推导 auto变量 函数返回类型推导 类模板参数推导 函数参数auto auto(x)衰减拷贝 decltype decltype decltype(auto) 增强 概念约束 增强 类型别名 别名模板 变量模板 推导指引 概念别名 增强 Lambda表达式 基本语法 基本Lambda 泛型Lambda constexpr Lambda 模板Lambda 属性支持 捕获机制 值/引用捕获 初始化捕获 捕获*this 增强捕获 显式对象参数 控制流 循环语句 范围for 初始化if/switch 范围for初始化 if consteval 条件语句 constexpr if基础 放松限制 constexpr if consteval [[assume]] 对象模型 移动语义 右值引用 增强 保证拷贝消除 三路比较 显式对象参数 特殊成员函数 =default/=delete 内联变量 默认比较 增强 常量求值 constexpr 基础constexpr 放松限制 constexpr if consteval/constinit 进一步放松 编译时计算 基础功能 变量模板 编译时算法 虚函数constexpr 数学函数 模板编程 可变模板 可变参数模板 增强 折叠表达式 概念约束 字面量参数 模板推导 基础推导 增强 类模板参数推导 缩写模板 元编程增强 内存模型 内存顺序 基础内存模型 优化 增强一致性 原子智能指针 原子视图 原子操作 基础原子类型 新原子操作 atomic_shared_ptr 等待/通知 信号量增强 模块系统 模块 核心模块 模块增强 包管理 模块分区 标准库模块化 协程 异步编程 基础支持(TS) 核心协程 标准协程类型 协程类型 基础框架 std::generator 标准库 智能指针 独占指针 unique_ptr make_unique 数组支持 原子支持 生命周期改进 共享指针 shared_ptr 性能优化 控制块访问 数组支持 内存效率 容器 序列容器 array/forward_list 性能优化 连续容器接口 span视图 flat容器 关联容器 无序容器 透明比较器 节点处理 范围构造 平面关联容器 容器视图 string_view span/mdspan mdspan多维 工具类型 可选类型 optional 概念约束 模式匹配准备 变体类型 variant 访问增强 预期类型expected 任意类型 any 类型安全访问 性能优化 算法 标准算法 新算法(all_of等) 性能优化 并行算法 范围算法 格式化算法 执行策略 并行策略 非序策略 新执行策略 Ranges 范围概念 基础(range-v3) 标准范围 范围增强 范围适配器 管道操作符 新适配器 文件系统 路径操作 filesystem 概念约束 性能改进 文件操作 目录迭代 错误处理改进 新操作 并发编程 线程管理 thread/mutex 性能优化 shared_mutex jthread 线程池基础 异步操作 future/async 连续性 共享future 停止令牌 新原语 同步原语 条件变量 优化 scoped_lock latch/barrier 信号量增强 格式化 文本格式化 std::format std::print 本地化 基础本地化 优化 增强 格式本地化 打印本地化 日期时间 时间点 chrono基础 持续时间字面量 日历扩展 时区支持 日期格式化 日历 基础日历 完整日历 日历算法 数值计算 数学函数 基础数学 特殊函数 数学常数 数值概念 扩展数学函数 随机数 随机数库 性能优化 新分布 概念约束 随机数增强 网络编程 Socket 网络TS基础 标准网络库 异步IO 异步模型 IO整合 反射 编译时反射 反射TS 标准反射 元编程 type_traits 整数序列 检测习惯用法 概念反射 静态反射
更多推荐


所有评论(0)