Boost.OpenMethod
Boost.OpenMethod 在 C++17 及以上版本中实现了开放(多)方法。
特性
-
单重分派的速度可与等效的虚函数调用媲美。
-
多重分派以常数时间完成(对于给定数量的虚参数)。
-
无冗余的多重分派表。
-
与标准智能指针互操作,可扩展至其他指针类类型。
-
默认情况下不处理异常。
-
用于方便的宏接口。
-
用于与模板互操作的无宏接口。
-
用于替代 RTTI 系统、错误处理、vptr 放置等的自定义点。
-
仅头文件。
已测试编译器
Boost.OpenMethod 已在以下编译器上进行测试:
-
clang: 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20
-
gcc: 8, 9, 10, 11, 12, 13, 14, 15
-
msvc: 14.3
-
icpx
以及在以下平台上:
-
Linux
-
macOS
-
Windows
-
s390x
致谢
我衷心感谢 C++ Alliance 的支持,特别是 Joaquín M. López Muñoz 鼓励我提交我的库,并成为第一个认可它的人;以及 Dmitryi Arkhipov 自愿担任审查经理。
感谢 Boost 社区的成员发表了正式审查意见:
-
Andrzej Krzemienski
-
Christian Mazakas
-
Joaquin M López Muñoz
-
Klemens Morgenstern
-
Ruben Perez
-
Yannick Le Goc
同时感谢 Steven Watanabe 提供了有见地的反馈和建议,以及所有发表评论和建议的人。
这项工作受到了以下论文的强烈影响:
-
C++ 的开放多方法,Peter Pirkelbauer、Yuriy Solodkyy 和 Bjarne Stroustrup
-
简化 C++ 程序分析,Yuriy Solodkyy。
-
关于 C++ 多方法和开放方法语言支持的报告,Peter Pirkelbauer、Yuriy Solodkyy 和 Bjarne Stroustrup。
-
使用压缩分派表优化多方法分派,Eric Amiel、Olivier Gruber 和 Eric Simon。
最后,感谢马德里卡洛斯三世大学的 J.D. Garcia 教授组织了“使用 std::cpp”会议,并向我介绍了 Joaquín。