Mi chiedevo, perché, in C++, il tipo di ritorno di std::reverse_iterator::operator[]
non è stato specificato. Non dovrebbe essere std::reverse_iterator::reference
?Perché il tipo di ritorno di std :: reverse_iterator :: operator [] non è specificato?
risposta
Questo è in realtà un rilassamento superfluo; A partire da LWG 448 e LWG 299 (oltre N3066), che sono incorporati in C++ 11, i tipi di ritorno degli iteratori di operator[]
devono essere convertiti in reference
. Il problema LWG originale che ha introdotto questa sottodecisione (386) è stato purtroppo risolto prima di quello che ha modificato i requisiti per il tipo restituito di operator[]
.
Dal momento che il tipo di ritorno di iteratori operator[]
viene ora richiesto di essere convertibili in reference
, il tipo di ritorno di reverse_iterator::operator[]
può chiaramente essere solo reference
- ed è, in entrambi i libC++ e libstdC++.
... e anche MSVC. Vuoi presentare un problema LWG? –
@ T.C. Su di essa. :) – Columbo
Vedere LWG 386/2347. – Columbo
@Columbo Potete fornire un collegamento ad esso? – Vincent
Vedere anche LWG 1051. – Columbo