繁体   English   中英

输入迭代器必须具有const解引用运算符吗?

[英]Must an input iterator have a const dereference operator?

输入迭代器是否必须具有const解引用运算符,还是仅非const版本也可以满足其要求?

没有。

例如“输入迭代器”。

通常从流中读取。 取消引用它会读取一个值并更改基础流。 在使用++运算符之前,再次使用取消引用运算符无效。

http://www.sgi.com/tech/stl/InputIterator.html

根据评论进行编辑。

你问可以吗?

当然,您可以在C ++中做任何事情。

还是您问应该?

现在取决于const是哪一位:

  • 您是说要通过const方法取消引用吗?
  • 或者,您是说(返回给对象的)引用是const?

我个人认为这两个问题的答案是否定的。
我认为可以肯定的是,这不会违反输入迭代器的约束(在上面的链接中定义)。

但是我认为将非成本引用返回给对象是不明智的,如果用户对其进行了更改,那么该对象也不会在流引用的对象中对基础对象进行更改(这违反了最不令人惊讶的原则)。

总的来说,我认为您需要澄清您的问题。
如果您更详细地解释上下文并询问天气,某个特定签名违反了限制,那么我也许可以给出更好的答案。 目前,这个问题过于笼统,因此我只能以过于笼统的方式表达答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM