c++23

特立独行的猫a1 天前
开发语言·c++23·expected·错误码处理
C++23 std::expected 详解:告别传统错误码和异常,构建现代健壮代码在 C++ 的世界里,错误处理一直是一个痛点。传统的做法要么是返回一个错误码(容易被忽视),要么是抛出异常(性能开销大,且难以追踪调用链)。C++23 引入的 <expected> 库,提供了一种优雅且高效的解决方案:std::expected<T, E>。
ALex_zry5 天前
安全·c++20·c++23
C++20和C++23 在内存管理、并发控制和类型安全相关优化方式的详细技术分析现代C++标准在进程间共享信息方面引入了多项重要改进,特别是在内存管理、并发控制和类型安全方面。以下是对C++20和C++23相关优化方式的详细技术分析。
fpcc5 天前
c++23
C++23中的模块应用说明之一基础分析在前面的c++20分析中就对模块的应用进行过分析和举例,最近的文章中通过对import的应用分析也再次引入了模块的开发。今天将对C++20后的模块开发进行一个初步的分析,从而让大家能够从概念层次上对模块有一个全面学习。 在传统的C++开发中,头文件机制虽然看上去简单,但实际上问题多多。特别是有的情况下,只是简单的把头文件的包含顺序改一下,可能编译就没有问题了。这让很多的开发者感到困惑。同时,头文件的使用也可能引起编译污染,导致很多编译单元进行重新编译,从而大降低了编译的效率。甚至为了降低这种可能,还引入了
Qt程序员6 天前
c++·c++23
从 C++11 到 C++23:枚举的原理升级与实践枚举(enum)是C++中最基础但最被低估的类型之一。它看似简单,却蕴含着丰富的语言特性和实现细节。其演进贯穿 C++ 标准迭代:从 C 风格的无作用域枚举(C++98),到 C++11 的强类型枚举(enum class),再到 C++20 的using enum语法糖与 C++23 的反射支持,每一步都围绕 “类型安全”“性能优化”“开发效率” 三大目标。
fpcc10 天前
c++·c++23
C++23中的自定义模块开发在前面的开发中,基本都是使用标准库中的模块直接调用。在本文中,将自己开发一个模块供程序调用,这样,就可以真正的进入了模块自行开发的实际应用场景。这和前面的动态库开发的思想有些类似,大家可以对比着来看。
Ivy_belief15 天前
java·c++·c++11·c++23
C++新特性汇总:涵盖C++11到C++23目录一、C++11(革命性更新)二、C++14(增量改进)三、C++17(实用增强)四、C++20(重大革新)
Mr_WangAndy17 天前
c++·c++23·c++40周年·简化隐士移动·auto新用法
C++23新特性_简化隐士移动和auto{}在 C++23 之前,编译器在 return x; 时自动执行 move(而不是 copy)是有严格条件的。如果条件不满足,必须手动调用move: 需要手动move的场景1:如果返回的类型和局部变量的类型不完全匹配。
fpcc19 天前
c++·c++23
C++23中的import使用CMake实践在前面开发中对使用import模块开发进行了简单的入门应用说明。但在实际的开发中,可能有更多的开发者使用CMake来开发C++程序,那么如何在cmake中使用模块进行开发呢?本文将对此通过一个基础的例程来进行分析说明。 此处的环境仍然是使用上文一样的环境,Ubuntu25.10,其它均为默认环境(gcc15.2 cmake3.31.6)
oioihoii19 天前
java·c++·c++23
C++11到C++23语法糖万字详解你是否曾面对同事的现代C++代码,看到满屏的auto、奇怪的Lambda表达式[](){}、看不懂的std::move而感到困惑?或者觉得现代C++代码看起来和“传统C++”完全不同,难以快速理解?别担心,这很可能只是因为你还不熟悉C++11以来引入的大量“语法糖”。
你的冰西瓜20 天前
开发语言·c++·stl·c++23
C++23 新特性详解:相较于 C++20 的主要改进C++23 是 C++ 编程语言的最新标准版本(截至 2023 年),它在 C++20 的基础上引入了许多重要的新特性和改进。以下是 C++23 相较于 C++20 的主要变化:
Mr_WangAndy22 天前
c++·c++23·c++40周年·多维下标运算符
C++23新特性_多维下标运算符在C++20之前,如果想写一个二维矩阵的元素,通常又以下两种实现方式。 方式1:函数调用风格matrix(x, y)。显示方式是 重载 operator()。缺点是,()这表示一个函数调用,而[] 才代表 访问数据,这不够直观。 方式2:链式下标风格maxtrix[x][y]. 重载 operator[] 返回一个代理对象(Proxy Object),该代理对象再重载 operator[]。这种实现方式需要维护临时对象,难以优化,容易产生性能开销。 C++23 的解决方案: 直接允许 operator[]
Mr_WangAndy22 天前
c++·c++23·c++40周年·c++23新特性·warning预处理命令
C++23新特性_#warning 预处理指令本文介绍C++23新特性之#warning 预处理指令。在C++23之前,几乎所有的主流编译器(GCC, Clang, MSVC)都支持#warning指令,用来在编译期间发出自定义警告。 C++ 23 将这一广泛存在的扩展纳入标准,无论使用什么编译器, 都可以使用#warning。
Mr_WangAndy22 天前
c++23·c++40周年·deducingthis
C++23新特性_Deducing this在C++20之前,一个类的this指针隐士藏在这个类的成员函数的第一个参数中。在类中提供一个获取属性的方法get(),为了支持左值,const左值,右值等不同场景,实现如下:
Mr_WangAndy22 天前
c++·c++23·c++40周年·if consteval
C++23新特性_if consteval在 C++20 中,我们使用 std::is_constant_evaluated() 来判断当前是否在编译期执行。虽然它能工作,但存在两个显著的陷阱: 缺陷:与if constexpr混用
cooldream20091 个月前
c++·c++20·c++23
C++20 与 C++23 新特性深度解析:迈向现代 C++ 的核心进化自 C++11 开启现代化转型以来,C++ 语言正在加速摆脱过去“复杂、难用、编译慢”的刻板印象,并逐步构建一个更安全、更高效、更具表达力的语言体系。尤其是近年的 C++20 与 C++23,它们不仅带来大量革命性的新特性,还在泛型编程、模块化构建、编译期计算、异步协程等领域重塑了开发者的编程习惯。
fpcc1 个月前
c++23
C++23中的import开发实践在c++20中就引入import这个模块应用机制了。但限于编译器和环境的滞后性,短时间内不大可能广泛的应用起来。但这不代表着开发者可以忽视它,一个新技术的出现,不管最终的结果如何。都需要在实践中进行应用并反馈结果。那么在实际编程中如何使用这种机制呢,下面就以一个最简单的程序来给大家演示一下,让大家有一个逐步接受的过程。 开发的环境使用了ubuntu25.10,程序中默认的gcc的版本是gcc15.2,编译默认的C++标准为c++20。如果缺少相关的库或者编译环境限制,请根据提示自行安装即可,此处不再赘述。
Bender_ydc1 个月前
算法·c++23
一个基于现代 C++23 Modules 的传统文化算法库,使用纯模块化设计实现(包含大六壬、六爻、紫薇斗数、八字、奇门遁甲)一个基于现代 C++23 Modules 的传统文化算法库,使用纯模块化设计实现https://github.com/banderzhm/ZhouYiLab
fpcc2 个月前
c++·c++23
c++23中的print和println人类和计算机交互过程中,一定会有一种数据格式化的过程。这个很好理解,两种不同的语言交互还需要一个翻译呢,对吧?从开始学习编程的std::cout系列和C语言中的printf函数,以及后面各种更高级的格式化函数sprintf,fprintf等,都说明这个需求是一个强需求。 C++从C++20中的formatting开始,就进行了一些更高级一些应用场景的支持,而在C++23中则提供了更容易为广大开发者接受的std::print和std::println。
charlie1145141913 个月前
开发语言·c++·学习·设计模式·桥接模式·c++23·概论
精读C++设计模式20 —— 结构型设计模式:桥接模式这是我们的第二个设计模式——桥接模式!桥接模式更加直白了,我们之前的适配器更倾向于对接口本身的桥接,这里说的是系统协作的桥接。笔者认为他跟适配器区别谈不上很大。但是还是要仔细说一说这个桥接模式,以及我们下面要引出的,笔者最最常用的pImpl法,他就属于桥接模式的一个响当当的代表
疯狂的Alex3 个月前
人工智能·c++23
半精度浮点在AI推理中的应用:C++23新类型与性能测试在AI推理场景中,“精度”与“性能”的平衡始终是核心矛盾——单精度浮点(FP32)虽精度足够,但16字节的矩阵乘法会占用大量显存带宽,导致推理速度受限;而整数量化(如INT8)虽性能优异,却会引入明显精度损失,难以满足图像分类、自然语言处理等高精度需求。半精度浮点(FP16/BF16)的出现恰好填补了这一空白,其2字节的存储体量能将显存占用减少50%,同时精度损失可控。