技术栈
c++进阶学习
Billy12138
7 天前
开发语言
·
c++进阶学习
Day25-编译期计算与 constexpr if:跨越编译与运行的边界
C++进阶计划 · Day 25 | 预计学习时长:2小时C++ 编译器不仅仅是一个翻译工具,它更是一台可以执行计算的虚拟机。在现代 C++(特别是 C++17/20)中,编译期计算的能力已经发展到可以处理相当复杂的逻辑。理解编译期计算的边界与运行时的交互,是从"会用模板"到"精通元编程"的关键跃迁。
Billy12138
19 天前
c++20
·
c++进阶学习
Day14-C++20 Modules:模块声明与导入、模块分区、与头文件对比、迁移策略
C++进阶计划 · Day 14 | 预计学习时长:2.5小时C++20 Modules 是 C++ 历史上自 C++11 以来最重要的语言特性变革。它从根本上重新定义了 C++ 代码的编译模型,解决了困扰 C++ 数十年的翻译单元(Translation Unit)隔离问题。
Billy12138
19 天前
开发语言
·
c++进阶学习
Day12-C++20 Coroutines(上):协程原理与Promise/Awaitable机制
C++进阶计划 · Day 12 | 预计学习时长:2小时如果说 Day 10 的 Ranges 是 C++20 的"数据处理革命",那么 Coroutines 就是 C++20 的"控制流革命"。协程让开发者可以用同步的方式编写异步代码,彻底改变了我们处理异步 IO、事件驱动编程和流式数据的范式。
Billy12138
20 天前
c++20
·
c++进阶学习
Day15-C++20 三路比较运算符 `<=>`:一次定义,全面排序
C++进阶计划 · Day 15 | 预计学习时长:2小时在 C++20 之前,实现一个完整的可比较类型是一项繁琐的工作。你需要手写 6 个比较运算符(==、!=、<、<=、>、>=),每一个都要保证逻辑一致性。这不仅冗长,还容易出错——比如 < 和 > 的定义不一致,导致排序算法行为异常。
Billy12138
1 个月前
开发语言
·
c++进阶学习
Day10-C++20 Ranges(上):惰性求值与组合式数据处理
C++进阶计划 · Day 10 | 预计学习时长:2小时如果说 Day 9 的 Concepts 是 C++20 的"宪法",那么 Ranges 就是基于这部宪法构建的"城市"。Concepts 定义了什么是合格的"公民"(类型),而 Ranges 则利用这些概念构建了一套全新的数据处理范式——惰性求值(Lazy Evaluation)与组合式编程(Composition)。
Billy12138
1 个月前
c++20
·
c++进阶学习
C++20 Concepts:约束与概念的现代范式
C++进阶计划 · Day 09 | 预计学习时长:2小时C++20 Concepts 是自 C++11 模板元编程诞生以来最重要的语言特性之一。它将模板约束从"隐式契约"提升为"显式声明",让编译器在模板实例化前就能提供有意义的错误信息,将 SFINAE 的隐式失败转变为 Concepts 的显式约束。
Billy12138
1 个月前
开发语言
·
c++进阶学习
结构化绑定与 if constexpr
C++进阶计划 · Day 7 | 预计学习时长:2小时Day 6 我们掌握了类型安全的容器——std::optional、std::variant、std::any。它们解决了"值可能不存在"和"类型不确定"的问题。但还有一个痛点:怎么优雅地拆解这些复合类型?
我是有底线的