为什么OuputIterator概念没有关联value_type?

时间:2017-06-07 20:38:52

标签: c++ c++11 iterator c++-concepts iterator-traits

我正在编写一个库,我需要创建一个迭代器接口,我希望尽可能地使它成为通用的。

template<class OutputIterator>
void receive(OutputIterator oit){
    auto val = get_function< std::iterator_traits<OutputIterator>::value_type > (); // legacy function
    oit = val;
}

令我惊讶的是,大多数输出​​迭代器value_type都是void。 (void呈现的代码无效,因为无法声明void变量)。

这里有两个例子:

http://en.cppreference.com/w/cpp/iterator/back_insert_iterator

http://en.cppreference.com/w/cpp/iterator/ostream_iterator

然而,在这两种情况下都有一个明显的值类型关联,我可以入侵每个并“看到”有一个值类型。例如back_insert_iterator::container_type::value_type(但无法从iterator_traits访问)。

为什么标准试图隐藏输出迭代器的value_type

也许正确的术语不是value_type,但显然有一些类型相关联。这是一个忽视?我是否错误地使用了输出迭代器?

0 个答案:

没有答案