Hi, I am trying to transform from a fusion vector of values to a fusion vector of non-const references to those values, the ultimate aim being to assign the original sequence from another sequence. The code below works ok with make_vector, but I want to be able to automate it for any fusion sequence. How can I do that? Current efforts follows: regards Andy Little #include <quan/out/current.hpp> #include <quan/matrix/out/matrix.hpp> #include <quan/operators/binary_operator_functors.hpp> #include <boost/fusion/sequence/io.hpp> #include <boost/fusion/sequence.hpp> #include <boost/ref.hpp> // try to make a function object to wrap references // in fusion style, with boost::ref struct add_reference_wrapper{ template <typename T> struct result{ typedef boost::reference_wrapper<T> type; }; template <typename T> typename result<T>::type operator()(T & t)const { return boost::ref(t); } }; int main() { using boost::fusion::at_c; typedef boost::fusion::vector4< quan::current::A, quan::current::mA, double,double > fusion_sequence_type; fusion_sequence_type sequence( quan::current::A(3), quan::current::mA(2), 1,1 ); std::cout << "before : " << sequence <<'\n'; // This works OK, and and assign the sequence to itself; std::cout << "after : " << boost::fusion::as_vector( boost::fusion::transform( boost::fusion::make_vector( boost::ref(at_c<0>(sequence)), boost::ref(at_c<1>(sequence)), boost::ref(at_c<2>(sequence)), boost::ref(at_c<3>(sequence)) ),sequence, quan::operator_plus_equals() ) ) <<'\n'; //############################################# // But cant make a vector of non const references boost::fusion::as_vector( boost::fusion::transform( sequence,add_reference_wrapper() ) ); //############################################# }