
Hello, I'm trying to create a fusion::filter_view with a predicate that must access, for each element, the element at the same position in an 'external' typelist. Let's say I have two sequences like this typedef mpl::vector<int&> mpl_vec; typedef fusion::vector<int> f_vec; Now, I would like a view into f_vec of, for instances, all references in mpl_vec. typedef fusion::filter_view<f_vec, is_reference<mpl::_> > f_view; This is obviously wrong; is_reference should evaluate with mpl_vec as its source. If I wrap is_reference like this template<class Sequence> struct is_reference_in { template<class T> struct apply : boost::is_reference<T> // Wrong, T should be extracted from Sequence { }; }; and create the view like typedef fusion::filter_view<f_vec, is_reference_in<mpl_vec> > f_view2; I gain access to the mpl_vec in my predicate, but since the predicate is immutable I cannot iterate over the Sequence template parameter to extract the type to send to is_reference. The way i'm solving this now is to store everything in the same vector, like typedef fusion::vector<fusion::pair<int, int&> > f_vec and create predicates that work with fusion::pair instead. This seems clumsy. Could zip_view help me out here? Any other suggestions? Thanks, Christian