Przypisanie różnic do podwójnie zwiększonego OutputIteratora

Na pytanie (doskonałe)Wymagania post-inkrementacyjne C ++ OutputIterator, obserwujemy, że dla wartości dereferencyjnej i przyrostowejr zOutputIterator rodzajXi wartośćo odpowiedniego typu, wyrażenie

*r++ = o;

jest poprawny i ma równoważną semantykę

X a(r);
++r;
*a = o;

Czy jednak nadal tak jesta jest możliwe do przypisania, jeślir został zwiększony więcej niż raz w tym okresie; to znaczy, czy ten kod jest ważny?

X a(r);
++r;
++r;
*a = o;

Trudno jest zobaczyć, jak operacje na wartości mogą mieć wpływ na ważność operacji na innej wartości, ale np.InputIterator (24.2.3) ma, w warunkach post++r:

Wszelkie kopie poprzedniej wartościr nie są już dłużej wymagane ani do wyłuskiwania, ani do bycia w domenie==.

Odpowiednie sekcje:24.2.2 Iterator, 24.2.4 Iteratory wyjściowe, 17.6.3.1 Wymagania dotyczące szablonów.

Również jeśli tak jestnie wymagane, aby były ważne, czy są jakieś sytuacje, w których wykorzystanie jej nieważności pomogłoby we wdrożeniu (efektywność, prostota)OutputIterator typ przy jednoczesnym przestrzeganiu istniejących wymagań?

questionAnswers(1)

yourAnswerToTheQuestion