#ifndef LVALUE_PMAP_H #define LVALUE_PMAP_H #include // i checked: boost provides get and put given [] // lvalue property map pmapname

that is: P p; valtype &v=p->name; #define PMAP_MEMBER_INDIRECT(pmapname,valtype,name) template struct pmapname { \ typedef P key_type; \ typedef valtype value_type; \ typedef value_type & reference; \ typedef boost::lvalue_property_map_tag category; \ reference operator[](key_type p) const { return p->name; } \ }; #define PMAP_MEMBER_INDIRECT_2(pmapname,name) template struct pmapname { \ typedef P key_type; \ typedef R value_type; \ typedef value_type & reference; \ typedef boost::lvalue_property_map_tag category; \ reference operator[](key_type p) const { return p->name; } \ }; #endif