Per velocizzare il codice al compilatore è consentito omettere la copia per il valore restituito da una funzione (è la cosiddetta RVO - return value optimization).
Nota che questa è una delle poche deroghe che lo standard C++ fa alla "as-if rule", ovvero la regola per cui ogni ottimizzazione dovrebbe essere "trasparente" (ovvero, qualunque ottimizzazione deve lasciare inalterato il "comportamento osservabile" del codice); in questo caso infatti l'ottimizzazione cambia il comportamento osservabile.

Rispondi quotando