从一线程序员的角度分享对即将进入 C++26 标准的大特性—反射的看法。从其概念开始,探讨反射的特性、实现和应用,特别是在 EDSL(嵌入式领域特定语言)的可能。
提纲:
- 概念
- 引子,图灵机的纸带有反射吗?
- 其他语言(Java, Rust, Python等)中的反射
- C++ 反射的背景和上下文(编译期元编程)
- 日常编程中的反射
- 特性介绍
- 编译器实现 [https://github.com/bloomberg/clang-p2996/tree/p2996]
- 编程中的应用
- 反射与EDSL
- 基于模板的 EDSL,用模板写状态机生成器(《C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond》第10、11章例子)
- P2996 带来的可能
- P3294 带来的新可能
- “土法炼钢” DSL 的利弊