发现 C++26 的编译时反射 - Daniel Lemire 的博客

Herb Sutter 宣布 C++26 将包含编译时反射。反射意味着可访问代码自身结构,如枚举类的方法等,多数编程语言有某种形式的反射,如 Java 。C++ 即将获得编译时反射,这是重要发展。几个月前宣布面向性能的 JSON 库 simdjson 会在主流编译器支持后支持编译时反射,可高效将自定义数据结构转换为 JSON 字符串及反向操作。

以对象到 SQL 映射为例,有自定义类型 User ,要插入实例到数据库,通过编译时反射可高效实现,如 generate_sql_insert 函数。函数通过模板元编程,利用“template for”类似“for”循环的特性及“expand”语法,计算生成 SQL 插入语句的列和值字符串。代码虽有些复杂但合理,未来几年许多项目将因编译时反射而简化优化。已在博客代码仓库发布完整实现代码(https://github.com/lemire/Cod...),且肯定可进一步改进。

阅读 25
0 条评论