2016-02-28 8 views
9

私は、なぜC++では、戻り値の型がstd::reverse_iterator::operator[]であるのか不明であることに疑問を抱いていました。 std::reverse_iterator::referenceではありませんか?std :: reverse_iterator :: operator []の戻り値の型が指定されていないのはなぜですか?

+0

LWG 386/2347を参照してください。 – Columbo

+0

@Columboあなたはそれへのリンクを提供できますか? – Vincent

+0

LWG 1051も参照してください。 – Columbo

答えて

6

これは実際に余分なリラクゼーションです。 C++ 11に組み込まれているLWG 448およびLWG 299N3066以上)のイテレータの戻り値の型はで、referenceに変換可能です。この未指定(386)を導入した元のLWGの問題は、復帰タイプの要件を変更したものの前に残念ながら解決されましたoperator[]です。

イテレータoperator[]の戻り値の型が今referenceに変換すること義務付けられているので、reverse_iterator::operator[]の戻り値の型は明らかにちょうどreferenceすることができます - そしてそれはlibcの++とのlibstdC++の両方で、あります。

+2

...とMSVCもあります。 LWGの問題を提出したいですか? –

+2

@ T.C。それで。 :) – Columbo