std :: move_iterator的迭代器类别

Iterator category of std::move_iterator

本文关键字:迭代器 iterator move std      更新时间:2023-10-16

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

由于向前迭代器要求参考类型为cv- T&,但是,对于正向迭代器模板,std::move_iterator<It>::reference将是对迭代器的值类型的R值引用(保留了参考预选程序)。

因为正向迭代器要求参考类型为cv-t&amp;但是

不正确。标准(C 17,N4659,[Forward.Iterators]/1.3)说:

如果X是可突变的迭代器,则referenceT的引用;如果X是常数迭代器,则reference是const T

的参考

rvalue参考是"对T的引用"。因此,他们有资格。如果他们打算排除RVALUE参考文献,则该标准将说" T的lvalue参考"。

因此,向前者返回rvalue参考是完全有效的。