std :: move_iterator的迭代器类别

时间:2017-09-30 18:47:35

标签: c++ iterator c++14

std::move_iterator适配器是否继承模板参数Iterator类型的迭代器类别是否有意义?

因为前向迭代器要求引用类型为cv - T&,但是对于前向迭代器模板,std::move_iterator<It>::reference将是对迭代器值类型的r值引用(保留了参考限定符)。

1 个答案:

答案 0 :(得分:4)

  

因为前向迭代器要求引用类型为cv-T&amp;,但是

不正确的。标准(C ++ 17,N4659,[forward.iterators] /1.3)说:

  

如果X是可变迭代器,reference是对T的引用;如果X是常量迭代器,reference是对const T的引用

Rvalue引用是“T的引用”。因此,他们有资格。如果他们想要排除右值引用,标准会说“左值引用T”。

因此,对于Forw​​ardIterator来说,返回右值引用是完全有效的。