【问题标题】:Why is the return type of std::reverse_iterator::operator[] unspecified?为什么未指定 std::reverse_iterator::operator[] 的返回类型?
【发布时间】:2016-02-28 15:35:52
【问题描述】:

我想知道,为什么在 C++ 中,std::reverse_iterator::operator[] 的返回类型未指定。不应该是std::reverse_iterator::reference吗?

【问题讨论】:

  • @Columbo 你能提供一个链接吗?

标签: c++ c++11 stl language-lawyer


【解决方案1】:

这其实是一种多余的放松;从 LWG 448LWG 299(超过 N3066)开始,它们被合并到 C++11 中,迭代器的返回类型 operator[] 应可转换为 reference。不幸的是,引入此规范不足 (386) 的原始 LWG 问题在更改operator[] 返回类型要求的问题之前得到了解决。

由于迭代器的operator[] 的返回类型现在被强制转换为referencereverse_iterator::operator[] 的返回类型显然可以只是reference - 在 libc++ 和 libstdc++ 中都是如此。

【讨论】:

  • ...还有 MSVC。想要提交 LWG 问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-29
  • 2011-08-31
  • 2016-04-06
  • 2013-04-12
  • 2015-05-20
相关资源
最近更新 更多