另一种阻止 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 的巧妙手法
本篇源于群友的某个提问,需求略显特别,却是一个非常不错的产生式元编程例子,遂记录一下。 原始问题 优化后的原始问题,代码如下: 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 《产生式元编程》第七章 巧活用折叠表达式
前言 模板编程,技巧如云,妙艺似雨。第五章滔滔滚滚地讲述了模板的核心概念和常用技术,篇幅稍长,诸般妙诀,未遑悉录,放于本章。 闲话不题,本章尽是一些巧妙的实践,于极尽模板产生式编程大有用处,难度不低,… Continue Reading 《产生式元编程》第六章 感今朝妙艺几人知
前言 本系列分为上中下三个篇章,前四章作为上篇,详细介绍了宏在产生式编程中的原理和应用,本章开始步入中篇,正式进入 C++ 的产生式元编程技术。 宏是 C 时期的产物,功能颇为简陋,亦非图灵完备,即或… Continue Reading 《产生式元编程》第五章 忆昔年模板三两事
宏部分完结 本系列断更良久,去年已更新前三章: 《产生式元编程》 第一章 宏编程计数引原理 《产生式元编程》 第二章 自复用代码生成技 《产生式元编程》 第三章 替换蓝染概念纤悉 宏部分的核心理论和技… Continue Reading 《产生式元编程》第四章 封装合并框架顿立
前两章主要集中于应用实践,理论概念都是蜻蜓点水,本章将重点放在这些概念原理上,深入讲解一下。 宏二段替换 源文件扫描后,宏被替换为目标内容,替换实际上分为两个阶段。 第一阶段的替换发生在参数替换之时。… Continue Reading 《产生式元编程》第三章 替换蓝染概念纤悉
衔引 原理毕,复用续。历观编程概念,避及重复,提其不变,于迭代与递归为甚。产生式元编程,乃欲自动产生百千代码,迭代递归,自是重要组件,不可不备。 本章以 FOR_EACH 为例,渐次派生问题,引出技术… Continue Reading 《产生式元编程》第二章 自复用代码生成技
引言 自 C 以来,宏为代码生成工具。至 C++98 则有模板,泛型编程日益盛行。迄于 C++20,引编译期表达式,添 Concepts,元编程基础支持始渐完善。由此元编程之技稍简。而静态反射乃元编程… Continue Reading 《产生式元编程》第一章 宏编程计数引原理
占位,待录。
占位,待录。
最近发现泛型编程有了另一利器——泛型 Lambda,比想象当中要强大许多,威力不小,和大家分享一下。 本篇内容需要对泛型编程有所了解,若是读过之前更新的相关文章,食用更佳。 泛型编程 开始之前,先来简… Continue Reading 泛型 Lambda,如此强大!
根据提案 P0634-Down with typename,C++20 之后 typename 在有些地方不再必要。 原文主要内容如下: If X::Y — where T is a template… Continue Reading 新简化!typename 在 C++20 不再必要
本篇作为 Understanding variadic templates 的进阶内容,同时,Fold Expressions 也是 C++17 最常用的特性之一。 Fold Expressions … Continue Reading C++17: Simplify Code with Fold Expressions