#include #include #include #include "vector_pointer_to_member.hpp" #include #include namespace fusion = boost::fusion; namespace fusish = boost::fusish; int main() { typedef fusion::vector3 my_vec; my_vec v(-1,"hello",-9.5); int my_vec::*p0 = fusish::vector_ptr_to_member(); char *my_vec::*p1 = fusish::vector_ptr_to_member(); v.*p0 = 17; BOOST_ASSERT(fusion::at_c<0>(v)==17); // off end gladly fails to compile (error message could use help tho) //int my_vec::*bad1 = fusish::vector_ptr_to_member(); // unfortunately this only works with vector## // because fusion::vector##<> is hidden inside of fusion::vector<> //typedef fusion::vector hidden_vec; //int hidden_vec::*n0 = fusish::vector_ptr_to_member(); return 0; }