Pasando por valor y copiando la optimización elision.

Me encontré con el artículohttp://cpp-next.com/archive/2009/08/want-speed-pass-by-value/

Consejos del autor:

No copie los argumentos de su función. En su lugar, páselos por valor y deje que el compilador haga la copia.

Sin embargo, no entiendo qué beneficios se obtienen en los dos ejemplos presentados en el artículo:

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

En ambos casos se crea una variable adicional, entonces, ¿dónde están los beneficios? El único beneficio que veo, es si el objeto temporal se pasa al segundo ejemplo.

Respuestas a la pregunta(1)

Su respuesta a la pregunta