У меня следующая проблема:
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;
}
Ожидается, что T - это последовательность прямых последовательностей (например, boost :: fusion :: vector), и я хочу получить представление о N-м элементе в каждом элементе T. Однако я не знаю заранее типа boost::fusion::vector
, например, boost::fusion::vector<int, double>
или boost::fusion::vector<int, double, std::string>
. В коде я могу определить правильный тип, но я не могу понять это в объявлении функции.
Спасибо!
Любые предложения по улучшению кода также приветствуются. :)