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?