TaPL Chapter 5 – The Untyped Lambda-Calculus
本章从零开始,完整地介绍了 untyped pure lambda-calculus 的 syntax、求值规则,并给出了大量的有关 untyped pure lambda-calculus 的使用示… 阅读更多 »TaPL Chapter 5 – The Untyped Lambda-Calculus
本章从零开始,完整地介绍了 untyped pure lambda-calculus 的 syntax、求值规则,并给出了大量的有关 untyped pure lambda-calculus 的使用示… 阅读更多 »TaPL Chapter 5 – The Untyped Lambda-Calculus
本章给出了一个非常简单的 mini language,其 abstract syntax 如下: 围绕这样一个简单的 mini language 进行讨论,本章介绍了如下的重要概念和工具: Synta… 阅读更多 »TaPL Chapter 3 – Untyped Arithmetic Expressions
最近我在知乎回答了一个有关 undefined behavior 的问题(知乎回答见这里),这个问题以及这个回答的关注数量和获赞数量都远远超出了我对一个普通的 C++ 问题能获得的关注的预期。由此可见… 阅读更多 »浅谈 C++ Undefined Behavior
今天上午的分布式系统课程内容中包含了可线性化(Linearizability)和序列一致(Sequential Consistent)的内容,不知不觉联想到了 C++11 中新引入的六种 memory… 阅读更多 »理解 C++ 的六种 Memory Order
C++20添加了两个declaration specifier:consteval 与 constinit 。前者只能参与函数的声明,后者只能参与变量的声明。 在介绍 consteval 与 cons… 阅读更多 »C++20: consteval & constinit
程序中常需要一次性传递多个同质对象。我们一般通过传递两个迭代器的方式来传递多个对象,这两个迭代器按约定一般称为首迭代器和尾迭代器。首迭代器指向被引用的多个对象中的第一个对象,尾迭代器指向被引用的多个对… 阅读更多 »C++20: Ranges
Peach fuzzer 是一款著名的通用黑盒模糊测试工具,被广泛地应用于真实世界的软件测试中。本文将简要介绍 peach 模糊测试工具的实现原理。 简介 Peach 是一款基于生成的模糊测试工具。P… 阅读更多 »Peach Fuzzer 实现原理介绍
Constraints 和 concepts 是 C++20 引入的两个非常受欢迎的特性。Constraints 和 concepts 的引入使得原本许多只能依靠 SFINAE 等模板黑魔法的写法变得… 阅读更多 »C++20: Constriants & Concepts
Three-Way Comparison C++20新增了一个运算符 <=>,称为 three way comparison operator,或三路比较运算符。这个运算符是一个二元运算符… 阅读更多 »C++20: Three-way Comparison
经过多年的标准化进程,在 C++ 开发者社区中呼声极高的 Modules 特性终于被收入 C++20 标准中。本文将对这一特性进行介绍和探讨。 编译器支持 在正式介绍前,我们首先看一看现有的编译器对 … 阅读更多 »C++20: Modules