Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- How to figure out the return type of a vector of nviews
- template <int N, typename T>
- /*what is the return type*/ nviewgetter( T const& t )
- {
- typename T::const_iterator it(t.begin());
- typedef BOOST_TYPEOF_TPL(*it) etype;
- typedef typename boost::fusion::result_of::as_nview<etype, N>::type netype;
- std::vector<netype> r;
- while(it!=t.end()){
- r.push_back( boost::fusion::as_nview<N>(*it) );
- it++;
- }
- //return r;
- }
- template <int N, typename T>
- struct nviewgetter_traits
- {
- typedef BOOST_TYPEOF_TPL(typename T::value_type) etype;
- typedef typename boost::fusion::result_of::as_nview<etype, N>::type netype;
- typedef std::vector<netype> result_type;
- // Or combine it into a single monstrosity if you prefer:
- // typedef std::vector<
- // typename boost::fusion::result_of::as_nview<
- // BOOST_TYPEOF_TPL(typename T::value_type), N
- // >::type> result_type;
- };
- template <int N, typename T>
- typename nviewgetter_traits<N,T>::result_type nviewgetter(T const & t)
- {
- typename nviewgetter_traits<N,T>::result_type r;
- for (auto it = t.begin(); it != t.end(); ++it) {
- r.push_back( boost::fusion::as_nview<N>(*it) );
- }
- return r;
- };
Add Comment
Please, Sign In to add comment