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++11C++14C++17C++20C++23
核心语言类型推导auto (变量)
decltype
函数返回类型推导
泛型Lambda的auto参数
类模板参数推导 (CTAD)
template<auto>
缩写函数模板
auto 用于函数参数
概念约束的auto
auto(x) 衰减拷贝
auto{} 推导
Lambda基本Lambda表达式
捕获列表
泛型Lambda
Lambda捕获表达式
广义捕获
constexpr Lambda
Lambda捕获*this
无状态Lambda可默认构造
模板Lambda
可构造可赋值
Lambda属性
显式对象参数
控制流基于范围的for循环-if/switch 初始化语句
内联变量
范围for循环初始化
consteval立即函数
if consteval
属性[[assume]]
对象模型移动语义
右值引用
=default, =delete
-保证的拷贝消除
强制省略拷贝
三路比较运算符<=>
聚合体推导指引
显式对象参数
this auto
常量求值constexpr (函数)
constexpr (简单类型)
constexpr 放松限制
变量模板
constexpr if
constexpr Lambda
内联变量
consteval
constinit
constexpr 虚函数
constexpr 算法
放松constexpr限制
constexpr 数学函数
模板编程可变参数模板
别名模板
外部模板
变量模板折叠表达式
模板参数推导指引
template<auto>
概念 (Concepts)
requires表达式
模板参数列表缩写
字面量类型参数
模板元编程增强
其他语法nullptr
enum class
final
override
属性语法
数字分隔符'
二进制字面量0b
结构化绑定
内联变量
嵌套命名空间定义
模块(Modules)
协程(Coroutines)
三路比较<=>
指定初始化
std::float16_t
std::bfloat16_t
无名占位符
标准库智能指针unique_ptr
shared_ptr
weak_ptr
make_shared
make_uniqueshared_ptr控制块访问
weak_ptrlock()优化
原子智能指针
make_shared对于数组
智能指针增强
容器与视图无序容器
std::array
std::forward_list
容器性能优化string_view
any
optional
variant
span
范围视图
flat_map
flat_set(C++23)
flat_map
flat_set
mdspan
实用工具tuple
function
bind
regex
chrono
integer_sequence
exchange
optional
variant
any
filesystem
apply
format
source_location
span
jthread
expected
print
generator
并发编程thread
mutex
future
async
原子操作
原子操作增强shared_mutex
并行STL算法
scoped_lock
atomic_shared_ptr
jthread
latch
barrier
semaphore
原子等待
原子视图
信号量增强
算法新算法(all_of, copy_if等)
移动感知算法
算法性能优化搜索/排序算法增强
采样算法
并行执行策略
Ranges库
范围算法
投影(Projections)
约束算法
范围增强
新范围适配器
format格式化算法

C++ 现代版本新特性对比表2

类别子类别特性C++11C++14C++17C++20C++23
核心语言类型系统auto类型推导auto变量函数返回类型推导类模板参数推导函数参数autoauto(x)衰减拷贝
decltypedecltypedecltype(auto)增强概念约束增强
类型别名别名模板变量模板推导指引概念别名增强
Lambda表达式基本语法基本Lambda泛型Lambdaconstexpr Lambda模板Lambda属性支持
捕获机制值/引用捕获初始化捕获捕获*this增强捕获显式对象参数
控制流循环语句范围for初始化if/switch范围for初始化if consteval
条件语句constexpr if基础放松限制constexpr ifconsteval[[assume]]
对象模型移动语义右值引用增强保证拷贝消除三路比较显式对象参数
特殊成员函数=default/=delete内联变量默认比较增强
常量求值constexpr基础constexpr放松限制constexpr ifconsteval/constinit进一步放松
编译时计算基础功能变量模板编译时算法虚函数constexpr数学函数
模板编程可变模板可变参数模板增强折叠表达式概念约束字面量参数
模板推导基础推导增强类模板参数推导缩写模板元编程增强
内存模型内存顺序基础内存模型优化增强一致性原子智能指针原子视图
原子操作基础原子类型新原子操作atomic_shared_ptr等待/通知信号量增强
模块系统模块核心模块模块增强
包管理模块分区标准库模块化
协程异步编程基础支持(TS)核心协程标准协程类型
协程类型基础框架std::generator
标准库智能指针独占指针unique_ptrmake_unique数组支持原子支持生命周期改进
共享指针shared_ptr性能优化控制块访问数组支持内存效率
容器序列容器array/forward_list性能优化连续容器接口span视图flat容器
关联容器无序容器透明比较器节点处理范围构造平面关联容器
容器视图string_viewspan/mdspanmdspan多维
工具类型可选类型optional概念约束模式匹配准备
变体类型variant访问增强预期类型expected
任意类型any类型安全访问性能优化
算法标准算法新算法(all_of等)性能优化并行算法范围算法格式化算法
执行策略并行策略非序策略新执行策略
Ranges范围概念基础(range-v3)标准范围范围增强
范围适配器管道操作符新适配器
文件系统路径操作filesystem概念约束性能改进
文件操作目录迭代错误处理改进新操作
并发编程线程管理thread/mutex性能优化shared_mutexjthread线程池基础
异步操作future/async连续性共享future停止令牌新原语
同步原语条件变量优化scoped_locklatch/barrier信号量增强
格式化文本格式化std::formatstd::print
本地化基础本地化优化增强格式本地化打印本地化
日期时间时间点chrono基础持续时间字面量日历扩展时区支持日期格式化
日历基础日历完整日历日历算法
数值计算数学函数基础数学特殊函数数学常数数值概念扩展数学函数
随机数随机数库性能优化新分布概念约束随机数增强
网络编程Socket网络TS基础标准网络库
异步IO异步模型IO整合
反射编译时反射反射TS标准反射
元编程type_traits整数序列检测习惯用法概念反射静态反射
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐