C++26 反射让类型擦除变简单

Beautiful Type Erasure with C++26 Reflection

26RyanJK5💬 7

如果你曾尝试过比 std::any 或 std::function 更复杂的类型擦除,那你一定写过上百行容易出错的代码,或者不得不依赖 Boost.TypeErasure 这种样板代码繁重的库。rjk::duck 利用 C++26 反射的魔力,在保留所有自定义能力和性能的同时,彻底消除了这些痛点。只需声明一次接口,库就能自动处理其余工作。它支持拥有和非拥有语义、运算符、接口组合,甚至能为第三方类型扩展方法。目前仅支持 gcc 的 -std=c++26 -freflection 模式。本文将深入解析 tag 生成、vtable 代码生成、重载解析以及让 duck 保持小巧的互转技巧,带你领略 C++26 反射在类型擦除领域的独特应用。

"rjk::duck 利用 C++26 反射的魔力,在保留所有自定义能力和性能的同时,彻底消除了这些痛点。"

同日更多故事 · 2026-07-14