私は、なぜC++では、戻り値の型がstd::reverse_iterator::operator[]
であるのか不明であることに疑問を抱いていました。 std::reverse_iterator::reference
ではありませんか?std :: reverse_iterator :: operator []の戻り値の型が指定されていないのはなぜですか?
9
A
答えて
6
これは実際に余分なリラクゼーションです。 C++ 11に組み込まれているLWG 448およびLWG 299(N3066以上)のイテレータの戻り値の型はで、reference
に変換可能です。この未指定(386)を導入した元のLWGの問題は、復帰タイプの要件を変更したものの前に残念ながら解決されましたoperator[]
です。
イテレータoperator[]
の戻り値の型が今reference
に変換すること義務付けられているので、reverse_iterator::operator[]
の戻り値の型は明らかにちょうどreference
することができます - そしてそれはlibcの++とのlibstdC++の両方で、あります。
+2
...とMSVCもあります。 LWGの問題を提出したいですか? –
+2
@ T.C。それで。 :) – Columbo
LWG 386/2347を参照してください。 – Columbo
@Columboあなたはそれへのリンクを提供できますか? – Vincent
LWG 1051も参照してください。 – Columbo