c++20

Mr_WangAndy9 小时前
c++20·c++40周年·指定初始化
C++20新特性_指定初始化 (Designated Initializers)C++20之前,初始化一个包含多个成员的结构体通常使用{}方式,按值的定义顺序进行初始化。这种方式缺点是可读性差,看到10,800,需要对照定义顺序来查看表示的意思。 如果在结构体中添加或删除一个成员,所有初始化代码都要重新修改。 C++20引入了指定初始化,解决了上面的问题。
Mr_WangAndy2 天前
c++20·c++40周年·编译期间判断
C++20新特性_std::is_constant_evaluated() 编译期判断C++20引入了std::is_constant_evaluated(),包含在头文件<type_traits>中,主要作用判断当前函数调用是否正在一个编译期间常量上下文中执行。 如果是在编译期求值(例如,在初始化 constexpr 变量、static_assert 中,或在 consteval 函数内),返回 true。 如果是在运行时求值,返回 false。 这个函数引入的核心价值在于,允许我们编写一个既能用于编译期也能用于运行时的 constexpr 函数,并为这两种情况提供不同的实现路径。这解决
小毅&Nora2 天前
java·c++20
【后端】【C++】从裸指针到 C++20 协程:现代 C++ 内存与并发编程的双重革命在 2025 年,仍有大量 C++ 项目运行在 VC++6.0 上——没有模板偏特化、没有 STL 安全性、没有 RAII、没有多线程标准库。开发者每天与 new[] / delete[]、_beginthreadex、CRITICAL_SECTION 打交道,如同在雷区跳舞。
Mr_WangAndy3 天前
c++20·c++20新特性·c++40周年·chrono库扩展·jthread线程
C++20新特性_std::jthread和chrono库扩展在C++11的thread是,如果忘记 join()( 让主线程等待子线程结束) 或者 detach()分离线程,当std::thread析构时,程序会直接调用terminate()崩溃。 在C++20中引入了 jthread,就是为了遵循RAII原则,析构时自动调用 join(),保证程序不崩溃。
Mr_WangAndy3 天前
c++20·c++40周年·c++原子智能指针·source_location·位操作函数
C++20新特性_原子智能指针,std::source_location和位操作函数C++11引入了智能指针,shared_ptr和unique_ptr是内存管理的利器。但是,shared_ptr不是线程安全的,虽然,std::shared_ptr 的引用计数控制块是线程安全的,但修改它指向的对象并不是线程安全的。所以,在多线程中读写同一个全局的 std::shared_ptr对象,面临数据竞争风险。 C++20之前的解决方法是,在多线程环境下,对共享变量加锁,以确保线程安全。 C++20 的解决方案: 直接特化 std::atomic 模板,允许 std::atomic<std::sh
Mr_WangAndy3 天前
c++20·likely·c++40周年·unlikely·特性测试宏
C++20新特性_[[likely]] , [[unlikely]]属性和特性测试宏现代 CPU 采用流水线技术执行指令。当遇到条件跳转(如 if 或 switch)时,CPU 需要猜测代码会走哪条路径,并预先加载该路径的指令。 如果CPU预测正确,流水线畅通无阻,性能极高。 如果CPU预测错了,就是一种控制冒险,CPU必须清空流水线,重新加载正确指令,这个过程需要几十个指令周期。 C++20之前,为了优化热点代码,开发者通常依赖编译器特定的扩展,例如 GCC/Clang 的 __builtin_expect:
Mr_WangAndy3 天前
c++20·format·c++20新特性·span·c++40周年
C++20新特性_std::format和span在C++20之前,文本格式化主要依赖于 C 风格的 printf函数或 C++ 的 iostream 流操作。printf 缺乏类型安全且难以扩展,而 iostream 虽然类型安全但语法繁琐且性能不高。 C++20引入了库,提供了一个类型安全、高效且语法类似于 Python 字符串格式化的现代解决方案。
ULTRA??3 天前
c++·c++20
C++20模块( import 核心用法)当然可以!以下是对你提供的关于 C++20 模块(import) 内容的全面整理与优化排版,已按 CSDN 博文风格组织:
Mr_WangAndy3 天前
c++20·c++20新特性·c++40周年·c++20概念
C++20新特性_概念 (Concepts)本文记录C++20新特性之概念(Concepts)。概念是C++20引入的新特性,用于模板编程中,被认为是C++11引入auto和lambda以来,模板编程中的最大变革。 C++20之前,模板编程(泛型编程)虽然强大,但存在两个著名的痛点: 缺点1: 不能精确定位错误位置:当向模板中传递一个不支持的类型时,编译器出现报错,但是不能精确指向哪一行,并支持错误。 缺点2:对预定类型的约束。在泛型编程时,想要指定某个函数模板T只能支持整型 或者 参数T必须有成员函数 hash(),通常使用SFINAE特性或en
Mr_WangAndy3 天前
c++20·c++20新特性·c++40周年·范围ranges·视图适配器·视图view
C++20新特性_范围 (Ranges)C++20引入了范围Range库,这是自C++11以来最大的一次现代化升级,可以让代码书写更简介,更符合现代化风格。 下面是C++11中容器的遍历方式,特点是传入两个迭代器,begin()和end().
Azxcc04 天前
网络·c++20
c++20协程浅析笔者被诸多协程文章视频误会,以致于一直囫囵吞枣,半懂不懂,遂即写下一点心得,希望后来人能有所感.本文将会聚焦于协程的基本原理和基本用法,来帮助你理解和掌握c++20的协程,在阅读之前,请确保你已经了解一些c++20协程的使用
Mr_WangAndy4 天前
c++20·c++20新特性·c++40周年
C++20新特性_[[no_unique_address]]属性在 C++ 标准中,为了保证每个对象都有唯一的内存地址(以便指针区分),即使是一个空类(Empty Class,没有任何数据成员,只有函数),其实例化后的大小也至少是 1 字节。
Mr_WangAndy4 天前
c++20·c++40周年·c++20新特性模块
C++20新特性_模块(Modules)在C++20之前,C++和C包含头文件时,都使用#include包含,这是一种文本替换机制,主要可以概括三大痛点。 1 编译速度极慢:#include 仅仅是简单的文本复制。如果一个头文件被 100 个源文件包含,编译器就必须解析这个头文件 100 次。对于庞大的标准库(如 或 ),这带来了巨大的重复工作量。 2 宏隔离性差:头文件中定义的宏(Macros)会“泄漏”到包含它的源文件中,甚至影响后续包含的其他头文件,导致难以排查的命名冲突和 Bug。 3 依赖地狱:头文件的包含顺序可能会影响代码行为,且很
Mr_WangAndy4 天前
c++20·c++40周年·范围for初始化
C++20新特性_范围 `for` 循环的初始化语句在 C++17 中,标准委员会为 if 和 switch 语句引入了初始化语句(例如 if (auto val = getVal(); val > 0)),这极大地优化了变量的作用域控制。 到了 C++20,这一优秀的特性终于被扩展到了 范围 for 循环 (Range-based for loop) 中。这虽然是一个语法上的小糖果,但对于写出“高内聚、低耦合”的代码有着重要的意义。
Mr_WangAndy4 天前
c++20·c++40周年·三路比较运算符
C++20新特性_三路比较运算符 (<=>)在C++11/14/17中,如果定义一个支持所有比较运算符的类,需要手动重载6个运算符,如下:C++20引入了三路比较运算符,让上面的代码实现更简洁。
Mr_WangAndy4 天前
c++20·c++40周年·consteval·constinit
C++20新特性_consteval 和 constinit在 C++11 引入 constexpr 之后,编译期计算(Compile-time Computation)的大门被彻底打开。但是,constexpr 有时过于“宽容”——它既可以在编译期运行,也可以在运行期运行,这导致了语义上的模糊。 为了更精准地控制编译期行为,C++20 引入了两个新的关键字:consteval 和 constinit。它们分别解决了“强制编译期执行”和“强制编译期初始化”这两个痛点。
Mr_WangAndy4 天前
c++20·c++20新特性·c++40周年·c++20协程
C++20新特性_协程(Coroutines)为了提供异步代码的高效性,C++20引入了协程,它为异步编程提供了一种全新的范式。在C++20之前,处理异步操作(如网络IO),通常需要注册回调函数来处理数据。但是回调函数再次调用回调函数,甚至多次调用回调函数,就出现了“回调地狱”,逻辑被分在了不同的回调函数中,导致逻辑分散。下面是一个 回调函数的例子:
Mr_WangAndy4 天前
c++20·c++20新特性·c++40周年·lambda表达式改进
C++20新特性_Lambda 改进Lambda 表达式自 C++11 引入以来,已成为现代 C++ 编程不可或缺的一部分。C++20 对 Lambda 进行了多项重要的增强,使其在泛型编程、编译期计算以及捕获机制上变得更加强大和安全。 下面对Lambda的改进进行总结说明。
止观止5 天前
c++·c++11·c++20·编程思想·现代c++
告别“祖传C++”:开启你的现代C++之旅C++ 是一门古老的语言吗?它复杂、危险,只属于那些头发稀疏的底层大神? 如果你还对 C++ 抱有这样的印象,那么这个系列将彻底颠覆你的认知。
Chrikk6 天前
c++·c++20·c++40周年
【下篇】C++20 约束、NCCL 通信与并发模型内存安全只是基准线,算力效率与分布式通信效率才是 AI 基座的决胜点。在构建大规模算子库与分布式推理服务时,泛型编程的复杂度、多卡通信的同步管理以及异步 IO 的回调地狱常成为工程瓶颈。C++20 引入的 Concepts 与 Coroutines,配合对 NCCL 库的 RAII 封装,本质上是将编译期的约束能力与运行时的调度能力提升到了新维度。本文继续从工程视角,探讨 Modern C++ 如何重构高性能分布式系统。