Передача по значению и копирование elision оптимизации

Я наткнулся на статьюhttp://cpp-next.com/archive/2009/08/want-speed-pass-by-value/

Совет автора:

Не копируйте аргументы вашей функции. Вместо этого передайте их по значению и позвольте компилятору выполнить копирование.

Тем не менее, я не совсем понимаю, какие преимущества получают в двух примерах, представленных в статье:

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

против

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

В обоих случаях создается одна дополнительная переменная, так в чем же преимущества? Единственное преимущество, которое я вижу, это если временный объект передается во второй пример.

Ответы на вопрос(1)

Ваш ответ на вопрос