【fusion】 Getting the adapted structure's member names
Fusionシーケンスにアダプトされた型なら、boost::fusion::extension::struct_member_name::call()を使えばメンバ変数名が取得できるようです。
#include <iostream> #include <string> #include <boost/fusion/include/adapt_struct.hpp> struct person { int id; int age; std::string name; person(int id, int age, const std::string& name) : id(id), age(age), name(name) {} }; BOOST_FUSION_ADAPT_STRUCT( person, (int, id) (int, age) (std::string, name) ) namespace fusionex = boost::fusion::extension; int main() { std::cout << fusionex::struct_member_name<person, 0>::call() << std::endl; std::cout << fusionex::struct_member_name<person, 1>::call() << std::endl; std::cout << fusionex::struct_member_name<person, 2>::call() << std::endl; }
id age name
ただし、内部実装として取得できるようにしているだけで、正式に公開されている機能ではないので注意(アンドキュメント)。
ちなみに返される型はconst char*です。