我想知道,为什么在C++中,std::reverse_iterator::operator[]
的返回类型是未指定的。它不应该是std::reverse_iterator::reference
?为什么未指定std :: reverse_iterator :: operator []的返回类型?
9
A
回答
6
这实际上是一种多余的放松;从LWG 448和LWG 299(超过N3066),这些都包含在C++ 11中,迭代器的返回类型operator[]
应该可以转换为reference
。引入此低规格(386)的原始LWG问题不幸在解决返回类型operator[]
的要求之前得到解决。
由于迭代器operator[]
返回类型,现在的任务是可以转换成reference
的reverse_iterator::operator[]
返回类型可以清楚地只是reference
- 这是在双方的libC++和libstdC++。
+2
...和MSVC。想要提交LWG问题? –
+2
@ T.C。在上面。 :) – Columbo
相关问题
- 1. 为什么std :: bind的返回类型未指定?
- 2. 未指定类型的返回类型
- 3. 为什么std :: is_assignable与相关指针类型返回false?
- 4. 为什么的std :: CBEGIN返回相同类型的std ::开始
- 5. std :: reverse_iterator有什么缺点?
- 6. std :: find_if_not()返回什么类型?
- 7. 未定义的std :: future作为返回类型的行为?
- 8. 从upper_bound指定返回值到reverse_iterator
- 9. 返回类型为std :: search()
- 10. 为什么不std :: weak_ptr有operator->?
- 11. 为什么我无法用非参考返回类型定义operator =?
- 12. 为什么std :: vector需要operator =
- 13. 的std ::可选的operator *()和operator - >() - 未定义的行为
- 14. 为什么std :: make_pair返回一对引用类型
- 15. 为什么std ::生成的返回状态与std :: for_each类似?
- 16. std :: reverse_iterator奇怪的行为(UB?)
- 17. 确定std :: function的返回类型
- 18. std :: is_arithmetic在泛型lambda中的int类型返回false:未定义的行为?
- 19. 指定返回类型
- 20. 为什么字符串有返回类型的指针?
- 21. 为什么/ USER_ID/feed返回未指定的错误?
- 22. std ::等于reverse_iterator
- 23. 为什么需要用std :: string :: operator +()显式调用Myclass :: operator string()?
- 24. 为什么我会返回一系列指针返回类型的字符?
- 25. Excel Worksheet.Usedrange返回什么类型返回
- 26. 为什么aspect要返回int类型?
- 27. 返回类型错误。为什么?
- 28. sizeof为什么返回类型
- 29. 为什么类型(mock.MagicMock())== mock.MagicMock返回False?
- 30. 为什么XSockets.WebRTC getUserMedia返回未定义?
见LWG 386/2347。 – Columbo
@Columbo你能提供一个链接吗? – Vincent
另请参阅LWG 1051. – Columbo