【发布时间】:2016-12-01 01:29:13
【问题描述】:
template<typename Iterator>
void put_value(Iterator pos, int n)
{
static_assert(IsOutputIterator<Iterator>);
//
// How to implement IsOutputIterator?
//
*pos = n;
}
std::iterator_traits<Iterator>::iterator_category 没有帮助。例如:vector<int>::iterator 显然是output_iterator,但std::iterator_traits<vector<int>::iterator>::iterator_category 将返回random_access_iterator,它可能不是output_iterator,比如const_iterator。
是否有任何可行的方法来检查迭代器是否是 c++ 中的 output_iterator?
【问题讨论】:
-
输入迭代器类别以外的任何迭代器都是输出迭代器。
-
随机访问迭代器满足输出迭代器的所有要求。
-
不,输出迭代器可能不允许读取。你只能写它。
-
满足Output Iterator 页面上列出的所有要求。
-
@Eugene,const_iterator 是 output_iterator 吗?
标签: c++ iterator c++-concepts