C++: 从 C++11 到 C++26 的演进之路

C++ 从 2011 年开始进入了快速发展的时代,每三年一个新标准,带来了大量现代特性。本文将梳理 C++11 到 C++26 的主要特性和常用特性。

详细指南

C++11

Core FeatureLibraryConcurrency

C++14

Core FeatureLibraryConcurrency

C++17

Core FeatureLibraryConcurrency

C++20

The BigCore FeatureLibraryConcurrency

C++23

Core FeatureLibraryConcurrency
  • -

C++26

Core FeatureLibraryConcurrency

日常开发必备

C++11:

  • auto - 几乎无处不在
  • Lambda 表达式 - 回调和算法
  • 智能指针 - 资源管理
  • 范围 for 循环 - 遍历容器
  • nullptr - 空指针
  • override - 虚函数重写

C++14:

  • 泛型 Lambda - 更灵活的 lambda
  • std::make_unique - 创建 unique_ptr
  • 数字分隔符 - 提高可读性

C++17:

  • 结构化绑定 - 解构返回值
  • std::optional - 可选值
  • std::string_view - 避免字符串拷贝
  • std::invoke - 统一调用接口
  • std::filesystem - 文件系统操作
  • [[nodiscard]] - 防止忽略返回值

C++20:

  • Concepts - 模板约束
  • Ranges - 函数式风格处理序列
  • std::format - 格式化输出
  • std::span - 数组视图
  • contains - 容器查找

C++23:

  • std::print / std::println - 简化输出
  • std::expected - 错误处理
  • std::generator - 生成器

C++26:

  • 静态反射 - 编译期类型 introspection
  • 契约 - 前置/后置条件与断言
  • std::execution / sender-receiver - 统一异步模型
  • std::simd - 数据并行

兼容性考虑

  • C++11 - 所有现代编译器完全支持
  • C++14 - GCC 5+, Clang 3.4+, MSVC 2015+
  • C++17 - GCC 7+, Clang 5+, MSVC 2017 15.8+
  • C++20 - GCC 10+, Clang 12+, MSVC 2022 16.10+
  • C++23 - GCC 13+, Clang 16+, MSVC 2022 17.5+
  • C++26 - GCC 15+, Clang 20+, MSVC 2022 17.14+(实验性支持 -std=c++26 / /std:c++latest