从C++98到C++26,经历了什么?

C++26平滑迁移实战:从评估到落地的四步法与核心战术 C++作为高性能系统开发的核心语言,其标准演进持续引入新特性以提升性能、安全性和开发效率。从C++11到C++20,每次标准升级都涉及编译器、工具链和代码范式的协同更新,其核心价值在于通过编译期计算、模块化等机制优化程序性能与可维护性。在实际工程中,这尤其适用于大型遗留代码库的现代化改造。对于面临C++26迁移的团队,关键在于采用系统化的工程方法:通过深度评估识别第三方库依赖与ABI兼容性等风险,升级工具链并建立并行CI流水线,再运用增量式、模块化的迁移策略,结合Clang-Tidy等自动化工具逐模块改造。 阅读详情

作为一名程序员,2023年最应该关注的话题就是C++的标准更新。

C++标准遵循3年开发周期,并以发布年份命名。C++在临发布的一年前会进入“功能冻结期(feature freeze)”,即版本开发进入半稳定状态,不再添加重大功能及特性,着重于修复各种BUG。因此,直到2025年初,C++26都会增加新内容。

上个月,C++26时间表发布,将会在“并发和并行性方面有重大改进”。而已经推出的C++ 23版本则沿袭了C++17的传统特征,完善了现有特性。但是,与C++ 98、C++11或C++20相比,改变略小。

图片

为理解C++下一步的发展方向,我们将C++放进历史大背景中讨论。

图片

C++26时间表发布,改进并发和并行性

上个月,ISO C++委员会举行会议,正式通过C++26时间表。当时,共有近180名成员参会。ISO C++标准委员会主席兼微软本地语言架构师Herb Sutter发文详细介绍了有关C++26的最新进展。

图片

C++ 26首轮会议公告(图源:Herb Sutter)

Herb Sutter在文章中表示:并发和并行小组目前仍在按计划推进C++26的 std::execution和SIMD并行。该版本在“并发和并行性方面有重大改进”,但是,Herb Sutter并没有透露具体改进内容与可能的技术细节。

值得一提的是,在本次会议上,委员会采纳首批共计40份变更文件,其中的变更都相当小。

图片

C++ 26时间表(图源:Herb Sutter)

据悉,与C++ 26相关的下两轮会议将分别于11月及次年3月举行,前者在美国夏威夷州科纳举行,由WorldQuant和Standard C++ Foundation主办;后者在日本东京举行,由Woven by Toyota主办。

图片

C++23标准

7月,C++23已完成更新,并进入了最终投票阶段。

C++23是由国际标准化组织(ISO)和国际电信联盟(ITU)颁布的编程语言C++标准。它最初于2017年6月正式发布,是2001年的ISO/IEC 14882:2001(C++11)的下一个迭代。

C++23完整地实现了C++的表达力,并使其对计算机科学和软件工程更有用。

它的主要特性包括:模板参数捕获、可变参数模板等。同时,它还引入了一些新的核心语言特性,如,UTF-8字符串字面量、更多的类型别名和using声明等。

此外,C++23还引入了一些新特性,如,简化的工作线程支持、原子操作、普通指针改进、区域性和字符编码以及可以按程度进行编辑的新字符串操作。

最值得一提的是,C++23中引入了this推导,使C++轻松实现复杂技术。你可以直接使用import std导入标准库,或者在std::print和std::println中应用C++20的格式字符串。

此外,在C++23中,开发者将获得扁平化关联容器。这些容器平衡了时间和空间复杂度。std::flap_map可取代std::map,而std::optional的接口将扩展为单子接口。

图片

从C++98到C++20

那么,C++标准经历了哪些历史变革呢?

图片

图片

C++98

20世纪80年代末,Bjarne Stroustrup和Margaret A. Ellis撰写了著名的《注释C++参考手册》(简称ARM)。

当时,ARM根据独立的C++实现定义了C++的功能;并且,ARM为第一个C++标准——C++98(ISO/IEC 14882)奠定了基础。

值得一提的是,C++98包括:模板、包含容器和算法的标准模板库(STL)、字符串和IO流。

图片

C++ 03

在C++ 03(14882:2003)中,修正了一些微小的技术,但在社区中仍被称为传统C++。

图片

TR1

2005年,令人兴奋的事发生了。Technical Report 1(简称TR1)推出,是由C++标准化委员会成员建立的boost项目,推动现代C++向前迈出一大步,也为后续C++11的出现奠定了基础。

具体来讲,TR1有13个库。这些库也成为了下个C++版本的一部分,分别对应到正则表达式库、随机数库、智能指针(如,std::shared_ptr)和哈希表。

图片

C++11

C++11被称为现代C++,它的许多特性从根本上改变了C++的编程方式。例如,C++11引入了TR1组件,还有移动语义、完美转发、可变模板或constexpr等特性。

但是,这些并不是全部。随着C++11的到来,我们还获得了内存模型作为基础的线程模型以及线程API。

图片

C++14

C++14是一个小型C++标准,引入了读写锁、泛化lambda和泛化constexpr函数。

实际上,C++14相对之前的11并没有太大改动,或者说更像C++11标准基础上的查漏补缺。C++14之后,还有17、20、23,所以,C++14更像个过渡版本。

图片

C++17

C++ 17有两个突出的特性:并行的STL和标准化的文件系统。大约80个STL算法可使用执行策略执行。

这意味着,调用std::sort可以在C++中实现对容器vec并行排序的提示。此外,你还可以按顺序进行指定排序或向量化。

就像C++11一样,boost对C++17也产生了重大的影响,从boost中获得了文件系统以及3种新的数据类型:std::optional、std::variant和std::any。

图片

C++20

C++ 20的革新从根本上改变了编写C++的方式,程度不亚于C++11,特别是以下四个重要特性:Ranges(范围库),Coroutines(协程),Concepts(概念)以及 Modules(模块)。

·新的Ranges库能够直接在容器上表达算法、使用管道符组合算法,并将它们应用于无限数据流。

·Coroutines使异步编程在C++中成为主流。Coroutines是协作任务、事件循环、无限数据流或管道的基础。

·Concepts将改变我们对模板的思考和编程方式,是有效模板参数的语义类别。Concepts让你能够直接在类型系统中表达你的意图。如果出了什么问题,你会收到简洁的错误信息。

·Modules将克服头文件的限制,也带来了诸多好处。例如,不再需要预处理器。最终,我们还将拥有更快的构建时间和更简单的包构建方式。

图片

C++的下一步:神奇递归模板模式

C++的设计模式大致可分为三类:创建型模式、结构型模式和行为型模式。

而神奇递归模板模式(CRTP)也是C++的设计模式,精巧地结合了继承和模板编程技术,可用来为C++的class提供额外的功能、实现静态、多态等。

总之,CRTP实现了静态多态,将会成为接下来C++的重要设计模式。

Modern C++特性实战指南:从C++11到C++26的系统学习路径 C++作为一门高性能的系统级编程语言,其核心价值在于对内存和计算资源的精细控制能力。随着软件工程对开发效率、代码安全性和可维护性要求的不断提升,Modern C++通过引入一系列新特性,在保持高性能的同时,显著提升了开发体验。从C++11开始,语言标准经历了多次重大更新,逐步形成了以智能指针、移动语义、Lambda表达式为代表的现代化编程范式。这些特性不仅解决了传统C++中手动内存管理、模板元编程复杂等痛点,更通过类型推导、范围循环等语法糖简化了代码编写。在工程实践中,Modern C++特性能够帮助开发者 阅读详情

相关推荐

UE6适配C++26:现代C++特性在游戏引擎中的实战应用

现代C++标准演进为游戏开发带来了协程、模式匹配、静态反射等新特性,这些特性通过改进代码表述性、简化异步逻辑和增强编译期能力,显著提升了开发效率与代码质量。在游戏引擎开发中,协程能够将复杂的异步流程转化为近乎同步的编写方式,极大改善资源加载、AI行为树等场景的可读性和可维护性;模式匹配则能简化状态机和处理分支的逻辑,使代码更加直观。这些技术价值在高保真模拟、实时图形和次世代游戏开发等应用场景中尤为突出。本文聚焦于Unreal Engine 6与C++26的适配实战,通过渐进式策略解决兼容性、工具链和团队知识

weixin_30565199的博客 322

C++11 到 23 再到 26:现代C++的进化之路

C++;闲聊

Smileyan's blog 9256

现代C++实战指南:从C++11到C++26的核心特性与工程实践

C++作为一门高性能的系统级编程语言,其核心价值在于对内存和资源的精细控制。通过RAII(资源获取即初始化)等核心原理,C++实现了零成本抽象,在保证性能的同时提升代码安全性。现代C++标准(C++11/14/17/20)引入的智能指针、移动语义等特性,正是这一思想的工程实践体现,它们从根本上改变了内存管理方式,解决了传统C++中常见的资源泄漏和性能瓶颈问题。在实际应用场景中,这些特性广泛应用于高性能计算、游戏引擎、嵌入式系统等领域,帮助开发者编写更安全、更高效的代码。本文聚焦于智能指针和移动语义这两个关键

B1334628598的博客 351

Windows 98也能跑AI!26年前的“老古董”玩转大模型Llama,每秒生成39个token

整理 |屠敏出品 | 优快云(ID:优快云news)被淘汰的“古董电脑”不一定非得走上“被卖掉换脸盆”的命运。有时稍加改造,它不仅能继续用,还能运行时下前沿的大模型!最近,一个名为 EXO Labs 的团队发布了一段视频,展示了在一台有着 26 年历史的 Windows 98 Pentium II PC 上运行强大的 LLM 的经历。令人惊讶的是,这一过程成功了,而且大模型生成速度相当不错,...

优快云资讯 7759

C++26新特性深度解析:契约、线性代数与编译期计算的实战突破

C++作为高性能系统编程的核心语言,其标准演进始终围绕提升代码安全性、表达力与运行时效率展开。从C++11的现代编程范式到C++20的模块与概念,每一次更新都旨在解决工程实践中的痛点。C++26延续这一路径,通过引入契约编程范式,将前置条件、后置条件等规约内化为语言特性,使代码正确性可由编译器辅助验证,显著提升大型项目的可维护性。同时,标准库首次集成线性代数模块,为机器学习、科学计算等高性能场景提供统一且优化的原生支持,减少对第三方库的依赖。这些特性结合包索引、增强的constexpr等改进,共同推动C++

weixin_30512965的博客 344

C++项目迁移:三步解决传统头文件编译兼容性问题

在C++项目迁移与现代化过程中,头文件依赖管理是核心挑战之一。头文件作为源代码的接口声明,通过预处理器指令实现代码复用,其设计直接影响编译效率与跨平台兼容性。传统C++项目常因历史遗留的头文件问题,导致在现代编译环境下出现路径解析失败、宏定义冲突及标准库不兼容等错误,严重影响开发效率。通过系统化的诊断、清理与集成三步法,结合CMake构建系统与静态分析工具,可有效解决头文件路径标准化、条件编译更新及依赖关系优化等工程实践问题,确保项目平稳迁移至C++26等现代标准。本文聚焦C++26迁移场景,深入解析头文件

无花的专栏 651

C++语言多个版本的迭代

C++的每个版本都在不断进化,从C++98的标准化到C++20的模块和协程,语言的功能和表达能力得到了极大的提升。现代C++(C++11及以后)引入了许多高级特性,使得代码更简洁、更安全、更高效。首次标准化:C++的第一个国际标准,奠定了现代C++的基础。小修订版本:对C++98的缺陷进行修复,未引入新特性。标准模板库(STL):引入了容器、算法、迭代器等。重大更新:引入了模块、协程等革命性特性。重大更新:被称为“现代C++”的起点。增量更新:对C++11的补充和改进。重要更新:引入了许多实用特性。

jie18894575860的博客 1156

SageMath下载与安装

SageMath的下载与安装

旺旺的碎冰冰~的博客 7507

C++26模块化编程:从编译加速到架构升级的工程实践

在大型C++项目中,编译时间膨胀和代码耦合是长期困扰开发者的核心痛点。传统头文件包含机制基于文本替换,导致符号污染、依赖混乱和漫长的增量编译。C++模块(Modules)作为一种现代代码组织方式,通过语义化的接口与实现分离,将代码封装为独立的二进制组件。其技术价值在于实现真正的编译隔离,消除宏污染,并允许编译器进行高效的增量编译与缓存。在游戏引擎、高频交易系统等对编译速度和代码质量要求极高的应用场景中,模块能显著提升开发效率和架构清晰度。本文聚焦C++26对模块特性的完善,结合CMake构建工具,详解如何将

weixin_30402231的博客 296

什么是无人机电源管理模块?电源管理模块有什么用处?

我来描述一下我的问题情景,电源管理模块的定义是,这里给出这个PX4官方对于电源管理模块的一些介绍,补充一下锂电池的放电原理大家就可以更好理解为什么需要电源管理模块

HRWVY0725的博客 2273

「点燃我,温暖你」用Python制作一个动态爱心效果

最近「点燃我,温暖你」这部剧非常火,讲述的是程序员的爱情故事。其中陈飞宇饰演的男主李峋,在剧中用程序做出的爱心跳动效果,非常炫。

Modeler_xiaoyu的博客 1万+

(C++26线程优化内幕)全球技术大会未公开的亲和性调参秘籍

掌握C++26并行算法性能瓶颈?通过2025全球C++及系统软件技术大会:C++26并行算法线程亲和性优化案例,详解多核平台下线程绑定与负载均衡的核心调参策略,提升系统吞吐量与响应效率。适用于高频交易、实时计算等场景,优化效果显著,值得收藏。

LiteCode的博客 643

Windows下Python调用D435i相机避坑指南:从SDK版本选择到RealSense Viewer报错解决

本文详细介绍了在Windows环境下使用Python调用Intel D435i相机的完整避坑指南。重点解决了SDK版本选择问题,推荐使用稳定的Intel RealSense SDK 2.54.2版本,并提供了从环境配置、常见报错解决到实际应用案例的全流程实践指导,帮助开发者高效完成相机部署与开发。

palm99的专栏 924

C++学习

学校里学习过C++基础,也不知道当时是哪个版本的。用MFC做的小程序也忘记了(当时连句柄的概念都不理解)!在毕业后,曾经在一个小公司结合SQL Server开发过一个工具,也是用MFC做的。然后,就没有再接触过了。 现在要用Qt开发一个桌面应用程序,主要是结合学习规划(一年学习一种语言),打算认真学习一下C++。 C++11已经发布,而且Qt也支持C++11规范。手头上...

weixin_30825199的博客 80

【血汗泪心路历程】怎么彻底删掉Sangfor文件?怎么彻底删除easyconnect?删除sangfor后网络坏了、某些app无法正常启动怎么解决?

教程来源于网络的五湖四海+gpt解答。用到了好几个教程和方法,遂这篇总结一下。会标明出处!先上一下战绩:终于把sangfor扔进回收站里了!!!哈哈哈那一刻真的好爽。

weixin_71246590的博客 6万+

Ascend C 算子开发遇到的问题及解决方法

在学习Ascend C算子开发进阶课程的时候,进行Ascend C自定义算子工程、算子调用等实验,在开发环境中遇到了一些问题,在这里记录一下。首先如果在启智社区CANN版本为6.3 ,要进行Ascend C算子开发,需要更新CANN版本。

qq_45257495的博客 5109

C++2026

近年来,C++注重在保持高性能的同时提升开发体验。2023年的C++23进一步优化模式匹配和标准库,而规划中的C++26将继续强化并发、元编程和工具链支持。1998年首个ISO标准(C++98)确立了模板、异常处理等核心特性,奠定了现代C++基础。2011年的C++11是重大转折点,引入了自动类型推导、lambda表达式、智能指针等现代编程范式,显著提升了开发效率和安全性。随后每三年发布一个标准(C++14/17/20),持续增强语言表达能力,其中C++20的模块、协程和概念更是革命性更新。

IDNJFEDS的博客 235

MTEX包在Matlab中实现从EBSD数据生成Abaqus网格与晶粒取向:一种对用户材料旋转矩阵分量实践的全面指南

此教程提供了一种使用MTEX Matlab包处理EBSD数据的方法,并生成Abaqus输入文件,这对于进行多晶体有限元分析具有极大的帮助。但值得注意的是,这只是一个基本的例子,实际应用中可能需要根据您的实际需求进行调整。MTEX包还提供了许多其他的功能,可以进行更复杂的分析和处理,我非常推荐您去探索。希望这篇文章能对您有所帮助,如果您有任何疑问或建议,欢迎留言交流。在接下来的文章中,我将会介绍更多关于MTEX的高级功能,敬请期待。– (完)–

qq_38334677的博客 4439

C++:C++入门基础|命名空间|输入输出

本篇博客是从C语言进阶到C++的第一篇学习笔记,包括C++的基础知识、命名空间等,从这一篇文章开始,进入新的阶段,希望在这新阶段里,我能够更加努力拼命地学习!

白乐天_ξ( ✿>◡❛)的博客 1788

qt实现OCC读取STEP模型并显示(附完整源码)

qt实现OCC读取STEP模型并显示(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1481

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

C++ 标准演进时间表与主要特性一览

C++ 每三年一个大版本,从 C++11 开始基本是“每版都值得升级”,尤其是这四个版本,堪称四次“语言重生”。现在(2025年底)写新代码,直接上 C++23 就对了!学完 C++23 后,关注 C++26 的反射和模式匹配,它们很可能再次改变我们写 C++ 的方式。

腾TO的技术博客 831

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

C++26新特性深度解析:从契约、反射到执行控制库的编程范式演进

在C++编程语言的发展历程中,每一次标准迭代都代表着编程范式的演进与工程实践能力的提升。C++26作为即将到来的新标准,其核心目标是在巩固现代C++特性的基础上,向更安全、更高效、更易用的方向迈进。从语言层面看,契约(Contracts)机制通过显式声明前置条件、后置条件和断言,将文档转化为可执行的检查,显著增强了代码的健壮性和可维护性;反射(Reflection)特性则允许程序在编译期查询和操作自身结构,为序列化、依赖注入等场景带来革命性的简化。在标准库层面,执行控制库(std::execution)引入

weixin_33724659的博客 419

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

C++的未来在哪里

近年来,C++注重在保持高性能的同时提升开发体验。2023年的C++23进一步优化模式匹配和标准库,而规划中的C++26将继续强化并发、元编程和工具链支持。1998年首个ISO标准(C++98)确立了模板、异常处理等核心特性,奠定了现代C++基础。2011年的C++11是重大转折点,引入了自动类型推导、lambda表达式、智能指针等现代编程范式,显著提升了开发效率和安全性。随后每三年发布一个标准(C++14/17/20),持续增强语言表达能力,其中C++20的模块、协程和概念更是革命性更新。

IDNJFEDS的博客 145

C++STL的演变从泛型编程到现代C++的最佳实践

STL以迭代器作为算法与容器间的桥梁,通过模板技术实现了“编写一次,适用于任何类型”的理想,其“数据与操作分离”的设计思想彻底改变了C++的编程范式。现代C++中,std::integral_constant、std::enable_if等工具将TMP应用于类型 Traits和SFINAE技术,为C++20概念(Concepts)奠定了基础。无序容器(C++11)、std::array(C++11)和std::span(C++20)丰富了数据结构选择。std::reduce等新算法更好地支持并行计算范式。

tcutra的博客 525
上一篇: 线上服务挂了 3 分钟,大神竟然说设计就是这样不是 bug
下一篇: MySQL 巨坑:永远不要在 MySQL 中使用 UTF-8!!
IT界那些事儿
博客等级 码龄6年 2万+粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值