I have a boost::graph that uses bundled properties like the following:
struct Vertex
{
    std::string id;
};
If I want to use this information in boost::dynamic_properties (e.g. for printing in graphml-format), I can use something like that:
template<typename T>
std::string myPrettyPrinter(const T& t);
int main()
{
    using namespace boost;
    MyGraph g;
    dynamic_properties dp;
    dp.property("id",
        make_transform_value_property_map(
            & myPrettyPrinter<std::string>,
            get(&Vertex::id, g)
        )
    );
}
Since the bundled property might change in the future, I want to be generic about the creation of the dynamic_properties. Therefore, I use boost::fusion
struct Vertex
{
    std::string id;
};
BOOST_FUSION_ADAPT_STRUCT(
    Vertex,
    id
)
template<typename T>
std::string myPrettyPrinter(const T& t);
template <typename T_Seq, typename T_Graph>
void member_iterator(boost::dynamic_properties& dp, T_Graph& g)
{
    using namespace boost;
    using Indices = mpl::range_c<
        unsigned,
        0,
        fusion::result_of::size<T_Seq>::value
    >;
    fusion::for_each(
        Indices(),
        [&](auto i)
        {
            using I = decltype(i);
            dp.property(
                fusion::extension::struct_member_name<T_Seq, i>::call(),
                make_transform_value_property_map(
                    & myPrettyPrinter<
                        typename fusion::result_of::value_at<T_Seq, I>::type
                    >,
                    get(
                        // This works but is not generic,
                        // since it relies on the specific
                        // member name "id":
                        & T_Seq::id,
                        g
                    )
                )
            );
        }
    );
}
int main()
{
    MyGraph g;
    boost::dynamic_properties dp;
    member_iterator<Vertex>(dp, g);
}
My problem is, that I can't find a way to express the line &T_Seq::id in a generic way. I have been looking into fusion::extension::struct_member_name, but was not successful.
I search for either a generic way to replace the problematic line or a different approach entirely to iterate over the members of Vertex.