c-在Boost Fusion :: vector上迭代
作者:互联网
我正在尝试使用以下方法迭代boost :: fusion矢量
typedef typename fusion::result_of::begin<T>::type t_iter;
std::cout << distance(begin(t), end(t)) << std::endl;
for(t_iter it = begin(t); it != end(t); next(it)){
std::cout<<deref(it)<<std::endl;
}
distance cout语句给了我有限的长度(2),但是循环似乎无限期地运行.
任何建议,不胜感激!
解决方法:
您不能只这样迭代一个Fusion向量,每个迭代器的类型可能与前一个不同(通常是).我猜这就是为什么您的代码中没有它= next(it)的原因,这会导致编译错误.
您可以为此使用boost :: fusion :: for_each,以及一个将每个元素打印到标准输出的函数对象:
struct print
{
template< typename T >
void operator()( T& v ) const
{
std::cout << v;
}
};
...
boost::fusion::for_each( t, print() );
标签:c,boost,iterator,boost-fusion 来源: https://codeday.me/bug/20191013/1908664.html