私は次の問題を抱えています:
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)であり、Tの各要素のN番目の要素のビューを取得したいということです。boost::fusion::vector
ただし、例えば boost::fusion::vector<int, double>
やの種類は事前にわかりませんboost::fusion::vector<int, double, std::string>
。コードでは正しい型を理解できますが、関数宣言ではこれを理解できません。
ありがとう !
コード改善のための提案も歓迎します。:)