Zmniejszanie iteratora końcowego
Czytałem dziś o tym, jak dla kontenerów obsługujących dwukierunkową iterację ten fragment kodu jest ważny:
Collection c(10, 10);
auto last = --c.end();
*last;
Co skłoniło mnie do zastanowienia, czy wymagane jest, aby podczas przesyłania pary dwukierunkowych iteratorów [beg, end) do algorytmu w STL zdefiniowano --end? Jeśli tak, to czy wynik powinien być pozbawiony wartości?
to znaczy
void algo(T beg, T end){
//...
auto iter = --end;
//...
*iter;
}