std::move_iterator
适配器是否继承模板参数Iterator类型的迭代器类别是否有意义?
因为前向迭代器要求引用类型为cv - T&
,但是对于前向迭代器模板,std::move_iterator<It>::reference
将是对迭代器值类型的r值引用(保留了参考限定符)。
答案 0 :(得分:4)
因为前向迭代器要求引用类型为cv-T&amp;,但是
不正确的。标准(C ++ 17,N4659,[forward.iterators] /1.3)说:
如果
X
是可变迭代器,reference
是对T
的引用;如果X
是常量迭代器,reference
是对constT
的引用
Rvalue引用是“T
的引用”。因此,他们有资格。如果他们想要排除右值引用,标准会说“左值引用T
”。
因此,对于ForwardIterator来说,返回右值引用是完全有效的。