0

输入迭代器是否必须具有const取消引用运算符,或者仅仅是非常量版本也满足其要求?

4

1 回答 1

1

不。

例如“输入迭代器”。

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

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

根据评论进行编辑。

你问能不能?

当然,你可以用 C++ 做任何事情。

还是你问应该?

现在取决于哪个位是 const:

  • 您的意思是应该通过 const 方法取消引用吗?
  • 或者你的意思是返回的引用(对对象)是常量?

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

但是我认为返回一个对象的非成本引用是不明智的,如果用户对其进行了变异,则该对象也不会改变流所引用的底层对象(这违反了最小意外原则)。

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

于 2012-11-17T03:37:29.693 回答