如何从 std::insert_iterator
和 std::back_insert_iterator
输出迭代器中删除类型?是否可以使用 boost any_iterator
来做到这一点?
#include <boost/range.hpp>
#include <boost/range/detail/any_iterator.hpp>
#include <vector>
typedef boost::range_detail::any_iterator<
int, boost::incrementable_traversal_tag, int &, std::ptrdiff_t > It;
int main()
{
std::vector<int> v;
It outIt( v.begin() ); // compiles
It inserter( std::back_inserter(v) ); // does not compile
return 0;
}
最佳答案
any_iterator
不是为与输出迭代器 一起使用而设计的,这就是back_insert_iterator
是(或者,就此而言,输入迭代器)。
back_insert_iterator
被定义为继承自 iterator<output_iterator_tag, void, void, void, void>
即它的 value_type
, reference_type
, distance_type
和 pointer_type
都是void
,但是any_iterator
期望能够通过其后备迭代器间接指向非空值。也许将它命名为 any_value_iterator
会更好;但它是一个 detail
类模板。
关于c++ - 类型删除的 C++ 输出迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10794286/