C++ 11反射库

Woj*_*ilo 17 c++ reflection introspection c++11

我现在要用c ++ 11编写大项目.

我正在寻找一些好的c ++ 11/c ++反射库,我发现了几个不同的库,但是大多数库在过去几年都没有更新,或者它们的功能非常有限.

你能告诉我是否有一个非常好的c ++ 1/c ++库用于反射?(我希望有静态和动态反射,尽可能多地了解方法,类等信息,可以动态添加和访问方法等)

或许c ++ 11提供了一些额外的功能,有助于更好地设计反射库,我应该自己编写吗?(虽然我没有找到有关它的信息.)

Cha*_*via 9

C++并不是反射的最佳语言.C++ 0x并没有真正改变它.您可以使用类型特征获得对静态反射的有限支持,甚至可以使用SFINAE静态地确定某个类是否具有特定成员函数或成员变量.但那才是真的.

动态反射受到严重限制.您可以使用这些<typeinfo>工具在运行时获取类的类型,但这就是它.

对于静态反射,如果没有严重的妥协,就不可能在类上进行泛型迭代并获得每个成员的变量/函数.Boost.Fusion设法通过提供允许您将对象绑定到类似元组的容器的宏来实现此目的.实际上,std::tuple或者boost::tuple类自然地提供编译时反射 - 换句话说,您可以静态迭代元组并确定每个成员的类型.这为您提供了一些近似于任意聚合类型的编译时反射的东西.不幸的是,它并不像为任意类内置的本机反射支持那样方便.


Ara*_*raK 5

似乎有一个图书馆满足您的"广泛"要求.看一下Mirror:Boost.Mirror.请注意,它正式不是提升的一部分.您还可以查看其他库:反射编程.