Zastanawiam się, dlaczego, w C++, typ zwrotu std::reverse_iterator::operator[]
pozostaje nieokreślony. Czy nie powinien to być std::reverse_iterator::reference
?Dlaczego zwracany typ std :: reverse_iterator :: operator [] nie jest określony?
Odpowiedz
Jest to w rzeczywistości zbyteczny relaks; Począwszy od LWG 448 i LWG 299 (ponad N3066), które są włączone w C++ 11, typy zwrotów iteratorów "operator[]
będą wymienialne na reference
. Oryginalny problem LWG, który wprowadził tę underspecyfikację (386), został niestety rozwiązany przed zmianą wymagań dotyczących typu zwrotu: operator[]
.
Ponieważ typ powrót iteratory operator[]
jest teraz upoważniona być wymienialny na reference
, rodzaj powrotu reverse_iterator::operator[]
może być tylko reference
wyraźnie - i to w obie libC++ i libstdC++.
... i również MSVC. Chcesz zgłosić problem z LWG? –
@ T.C. Na tym. :) – Columbo
Zobacz LWG 386/2347. – Columbo
@Columbo Czy możesz podać link do niego? – Vincent
Zobacz także LWG 1051. – Columbo