Przekazywanie przez optymalizację wartości i kopii

Natknąłem się na artykułhttp://cpp-next.com/archive/2009/08/want-speed-pass-by-value/

Porada autora:

Nie kopiuj argumentów funkcji. Zamiast tego przekaż je według wartości i pozwól kompilatorowi wykonać kopiowanie.

Nie rozumiem jednak, jakie korzyści przyniosą dwa przykłady przedstawione w artykule:

//Don't
    T& T::operator=(T const& x) // x is a reference to the source
    { 
        T tmp(x);          // copy construction of tmp does the hard work
        swap(*this, tmp);  // trade our resources for tmp's
        return *this;      // our (old) resources get destroyed with tmp 
    }

vs

// DO
    T& operator=(T x)    // x is a copy of the source; hard work already done
    {
        swap(*this, x);  // trade our resources for x's
        return *this;    // our (old) resources get destroyed with x
    }

W obu przypadkach tworzona jest jedna dodatkowa zmienna, więc gdzie są korzyści? Jedyną korzyścią, jaką widzę, jest przekazanie obiektu tymczasowego do drugiego przykładu.

questionAnswers(1)

yourAnswerToTheQuestion