《产生式元编程》第五章 忆昔年模板三两事
前言 本系列分为上中下三个篇章,前四章作为上篇,详细介绍了宏在产生式编程中的原理和应用,本章开始步入中篇,正式进入 C++ 的产生式元编程技术。 宏是 C 时期的产物,功能颇为简陋,亦非图灵完备,即或… Continue Reading 《产生式元编程》第五章 忆昔年模板三两事
Dive deep into the C++ core, and discover more!
前言 本系列分为上中下三个篇章,前四章作为上篇,详细介绍了宏在产生式编程中的原理和应用,本章开始步入中篇,正式进入 C++ 的产生式元编程技术。 宏是 C 时期的产物,功能颇为简陋,亦非图灵完备,即或… Continue Reading 《产生式元编程》第五章 忆昔年模板三两事
临时更一篇关于 format 的内容,经验之谈,置为三星。 进入 C++ 标准的库,实践时日往往很久,像 fmtlib、range-v3 这些经典库都已存在十年以上。不受标准牢笼,一个库的发展会快速许… Continue Reading C++20 std::format 替换 fmtlib 的注意点
宏部分完结 本系列断更良久,去年已更新前三章: 《产生式元编程》 第一章 宏编程计数引原理 《产生式元编程》 第二章 自复用代码生成技 《产生式元编程》 第三章 替换蓝染概念纤悉 宏部分的核心理论和技… Continue Reading 《产生式元编程》第四章 封装合并框架顿立
本篇介绍几个细琐的小特性,可以使代码更加安全可靠。 最常见的情况是采取 for loop 遍历某个容器,比如: std::vector<int> v(10); std::ranges::i… Continue Reading 使用 C++20 安全地比较不同类型的整型值
What are the ranking rules for reference bindings? Let’s consider the following example: void … Continue Reading Normal OR Rules for Reference Bindings
本篇分享详细解释一下 Top-level const 和 Low-level const 的概念。 Top-level 和 Low-level 指的是名称修饰符所处的位置,const 是最常见的修饰符… Continue Reading T240516 Top-level const and Low-level const
本文想讨论一下人是如何成长的。仅是一家之言,可能都是错的,请理性阅读。 自上而下为学,自下而上为用。 知识本无边界,也非先天有之,人需要在自然界中生存,就必然会经历各种磨难险阻,久而久之,自然会积累一… Continue Reading 觉者和修者,知与行本是一体
Introduction 近日某个项目临近结束,书文档,写配置,发现网上的 CMake 教程颇旧,混乱不堪,且缺乏实际作用,难及需求。遂系统读了一些 Modern CMake 资料,撰文记录,以供参考… Continue Reading Configuring Transitive Dependencies with Modern CMake
本篇可以结合 Left-to-Right vs. Right-to-Left Coding Styles 阅读,属于同一主题。本篇侧重于讲解具体的类型推导规则。 Decltype Specifier … Continue Reading Mastering Placeholder Type Deduction
进入 Modern C++,声明风格由 Right-to-Left 逐渐转变为 Left-to-Right,个中差异,优劣得失,且看本篇内容。 前言 Classic C++ 中,声明风格是自右向左,如… Continue Reading Left-to-Right vs. Right-to-Left Coding Styles
元宵三五,夜雪初霁,蕙风透寒。 乘暇再更一个 C++26 的小特性,动机简单,看一下小例子: using Point3D = std::tuple<float, float, float>… Continue Reading C++26’s Placeholder variables with no name
目前进入 C++26 的特性当中,Pack Indexing 是较为有用的一个,值得谈谈。 发展背景 早期,C++ 元编程是摸着石头过河,许多特性只是当时情况下的权宜之计,并非最理想的解决方式。纵然非… Continue Reading C++26 Pack Indexing
岁月如驰,距前篇反射文章,已近两载。 C++23 工作殆尽,C++26 紧随其后,Relection 也有了一些新进展,本篇来看这些更新的些许内容。 相关作者 知识似树,发枝散叶,往往只需两三人而已。… Continue Reading Reflection for C++26
这是昨天群里的一个问题,但我想谈的是背后的本质问题。 这个问题其实可以简化为: template <typename …Args> void foo(std::function<… Continue Reading T240104 Failed to Passing a Lambda Expression to std::function
不知大家是否遇到过这样的代码: template <class… Args> void f(Args……) {} 参数包后面紧跟着 6 个 .,一般不是用 … 来扩展参数包… Continue Reading T240102 What does the …… mean in C++?