Dekrementieren eines Off-the-End-Iterators
Ich habe heute gelesen, wie für Container, die bidirektionale Iteration unterstützen, dieser Code gültig ist:
Collection c(10, 10);
auto last = --c.end();
*last;
Das brachte mich zum Nachdenken. Ist es erforderlich, dass beim Senden eines Paares bidirektionaler Iteratoren [Beg, End] ein Algorithmus in der STL angegeben wird, für den --end definiert ist? Wenn ja, sollte das Ergebnis dereferenzierbar sein?
dh
void algo(T beg, T end){
//...
auto iter = --end;
//...
*iter;
}