另一种阻止 ADL 的巧妙手法
在 TBOMC++ (The Book of Modern C++) 第一章中,介绍过利用 () 阻止 ADL 的技巧,本篇介绍另一种更加巧妙且有用的阻止 ADL 的方法。 介绍这种方法之前,先讲解一… Continue Reading 另一种阻止 ADL 的巧妙手法
Dive deep into the C++ core, and discover more!
在 TBOMC++ (The Book of Modern C++) 第一章中,介绍过利用 () 阻止 ADL 的技巧,本篇介绍另一种更加巧妙且有用的阻止 ADL 的方法。 介绍这种方法之前,先讲解一… Continue Reading 另一种阻止 ADL 的巧妙手法
Motivation of std::function_ref std::function_ref 是轻量级的 std::function,能够引用任意形式的可调用对象。在此之前,C++ 便已存在许多… Continue Reading C++26 function_ref and nontype_t
本篇源于群友的某个提问,需求略显特别,却是一个非常不错的产生式元编程例子,遂记录一下。 原始问题 优化后的原始问题,代码如下: struct base { virtual void foo() = 0… Continue Reading Clean Conversion from Run-time Values to Compile-time Constants in C++
Introduction 模板是第一阶段元编程最核心的工具,中篇以两章五星难度的内容开头,深入纵览其核心技术与诸般妙诀。本章要讨论的元编程工具——Fold Expressions,依旧处于第一阶段,是… Continue Reading 《产生式元编程》第七章 巧活用折叠表达式
T240725 说到,Unnamed namespaces 有一个唯一的名称会通过 using-directives 自动导入,倘若可以手动指定这个名称,就是 inline namespaces 了。… Continue Reading T240730 inline namespace
Unnamed namespaces,也叫 Anonymous namespaces,是命名空间的一种特殊形式。这种形式可以省略命名空间的名称,如: namespace { /* .. . */ } … Continue Reading T240725 Unnamed namespaces
前言 模板编程,技巧如云,妙艺似雨。第五章滔滔滚滚地讲述了模板的核心概念和常用技术,篇幅稍长,诸般妙诀,未遑悉录,放于本章。 闲话不题,本章尽是一些巧妙的实践,于极尽模板产生式编程大有用处,难度不低,… Continue Reading 《产生式元编程》第六章 感今朝妙艺几人知
前言 本系列分为上中下三个篇章,前四章作为上篇,详细介绍了宏在产生式编程中的原理和应用,本章开始步入中篇,正式进入 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