zup*_*zt3 5 c++ reflection metaprogramming c++-standard-library c++20
我开始阅读 C++20 中的反射,并感到非常困惑。它的当前状态是什么,即我们现在可以使用多少?
我找到了反射 TS - 但即使这个网站上的例子也无法编译(在 GCC11 和 C++20 上),因为编译器找不到“#include <experimental/reflect>”......所以它不完全在 GCC 中?
所以我的问题是:我们现在可以使用任何反射,而无需等待 C++23 吗?'任何'我的意思是例如查询编译器以获取类成员列表、枚举名称等?我所说的“使用”是指在生产代码中,而不仅仅是为了玩耍。
以下是Andrei Alexandrescu 在 CppCon 2022 上关于反思的演讲的链接,其中解决了您的主要问题:反思提案仍在酝酿中。假设 ISO 委员会需要三年的时间来完成c++( c++26) 的下一次迭代,然后编译器有足够的时间来实现和支持已批准的功能,那么我们预计至少需要五年时间才能在旗帜下出现反射(和插入std)里面gcc, clang/ llvm,msvc等
由于五年对于幕后反思来说是一段很长的时间,因此您可以在表面上实现类似的目标。例如,您可以c++20为您的小型应用程序构建一个最小的脚本语言来撬开可执行文件(与),然后您就拥有具有反射、插入和整个自省功能的传说中objdump的解释环境(与)。python