A jaki jest kontekst tego zdania? Bo wydaje mi się ze chodzi tu o coś zupełnie innego niż kopiowanie argumentów. Chodzi bardziej o sytuację gdy ktoś napisze coś w stylu
i++++;
albo
i++=10;
Czyli gdy próbujesz przypisać wartość do obiektu tymczasowego. No bo wywołanie i++ (czyli wywołanie operatora postinkrementacji) zwraca ci tylko pewną wartość (a nie referencje).
Definicja tego operatora wygląda tak:
int operator++(int) //nie int& operator++(int) tylko int operator++(int), więc zwraca wartość!
{
int stara_wartosc=this->value; //zapamiętujemy wartość w zmiennej lokalnej, ona zniknie po wyjsciu z funkcji!
(this->value)++;
return stara_wartosc; //zwracamy starą wartość zmiennej, a nie zmienną jako taką
}
Istotą jest to, ze po wyjściu z funkcji ta zmienna lokalna zniknie i nie będzie do niej dostępu. Co wiecej wartość która byla w tym miejscu moze też ulegać zmianie. Mamy jedynie pewność że wartość jest poprawna zaraz po wyjsciu z funkcji, czyli tylko w chwili jej wywołania:
int x = funkcja();
Mamy pewność ze funkcja zwróci nam poprawną wartość. Ale gdyby funkcja zwracała int& a nie int, to mogłoby sie okazać ze za chwile wartość tej referencji byłaby zupełnie inna.