Passando por Valor e copiando a otimização de elis

Eu me deparei com o artigohttp://cpp-next.com/archive/2009/08/want-speed-pass-by-value/

Conselho do Autor:

Não copie os argumentos da sua função. Em vez disso, passe-os por valor e deixe o compilador fazer a cópia.

No entanto, eu não entendo quais benefícios são obtidos nos dois exemplos apresentados no artigo:

//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
    }

Em ambos os casos, uma variável extra é criada, então onde estão os benefícios? A única vantagem que vejo é se o objeto temp é passado para o segundo exemplo.

questionAnswers(1)

yourAnswerToTheQuestion