我用
ostreambuf_iterator
具体如下:
在c++17之前,
template< class CharT, class Traits = std::char_traits<CharT> >
class ostreambuf_iterator : public std::iterator<std::output_iterator_tag,
void, void, void, void>
需要我们确定std::iterator的每个参数类型,因此
std::ostreambuf_iterator
void
也没那么糟。
我们知道,
std::iterator
在c++17中已弃用。因此,迭代器应该在自己的主体中typedef其成员类型,例如:
Member type Definition
---------------------------------------------
value_type void
difference_type void
pointer void
reference void
iterator_category std::output_iterator_tag
为什么这些空类型仍然需要typedef?瞧,我想
Member type Definition
---------------------------------------------
iterator_category std::output_iterator_tag
够了。毕竟,反对的动机
std::iterator
只是为了简化标准(库)。所以应该有一些我想不出来的原因。
在谷歌搜索之后,我发现
a question about
在堆栈溢出时,答案是:
typename Iter::value_type v = *it;
但我想如果我们不
value_type
,这样的错误也可以避免。