Hi list, I am new to fusion, so my problem might be really easy to solve. I have a fusion vector which looks a bit like typedef fusion::vector<std::vector<A>,std::vector<B>,std::vector<C> > Tuple; All vectors have the same size and I want from each of these std::vectors one specific element (like the 10th from every vector) and create a fusion::vector<A&,B&,C&> from these elements(my real problem is a bit more complicated, for example one of the vectors might be std::vector<bool>, so the type might be different from an actual reference) My first try was transform: //the Functor which extracts the i-th element class Get { private: std::size_t m_index; public: Get(std::size_t index):m_index(index){} template<typename Sig> struct result; template<typename U> struct result<Get(U&)>{ typedef typename U::reference type; }; template <typename U> typename result<Get(U)&>::type operator()(U& vec) const{ return vec[m_index]; } }; Tuple myTuple(...); fusion::vector<A&,B&,C&> ref = boost::fusion::transform(myTuple,Get(0)); But this doesn't work, because 1. transform only takes myTuple as constant argument. 2. it performs a value-initialization of the references in the constructor, not in the initialization list. Any solution to my problem? It should work for fusion::vector, but a solution which works for all fusion sequences is awarded with bonus points :). If there is no solution for fusion::vector, I would appreciate a solution for another container as well (but no bonus in this case!) Greetings, Oswin