GitHub: https://github.com/sentomk/patternia
文档: https://patternia.tech
Patternia 是一个 header-only 的 C++17 模式匹配库,目标是为 C++ 提供结构化的条件分支与数据解构能力,替代分散的 if/switch 与手动类型判别。零运行时开销,不依赖 RTTI 和虚函数。
相较上次发帖时的状态,v0.9.0 的主要进展:
#include
using namespace ptn;
// 值守卫
const char *bucket(int x) {
return match(x) | on(
$[PTN_LET(value, value > "negative",
$[PTN_LET(value, value > "small",
_ >> "large"
);
}
// 结构解构 + 命名守卫
struct Point { int x; int y; };
bool on_diagonal(const Point &p) {
return match(p) | on(
$(has())[PTN_WHERE((x, y), x == y)] >> true,
_ >> false
);
}
后续计划包括穷尽性检查与编译期诊断的完善。欢迎 issue 、反馈和设计层面的讨论。

