std::move_iterator 的迭代器类别

Per*_*-lk 2 c++ iterator c++14

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

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

Nic*_*las 5

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

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

ifX是一个可变迭代器,reference是对 的引用T;ifX是常量迭代器,reference是对 const 的引用T

右值引用是“对”的引用T。因此,他们有资格。如果他们打算排除右值引用,则标准会说“左值引用T”。

因此,ForwardIterator 返回右值引用是完全有效的。