为什么未指定std :: reverse_iterator :: operator []的返回类型?

时间:2016-02-28 15:35:52

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

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

1 个答案:

答案 0 :(得分:6)

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

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