C++ Copia l'inizializzazione elision


Esempio

Se si utilizza un'espressione di valore per copiare l'inizializzazione di una variabile e tale variabile ha lo stesso tipo dell'espressione di valore, la copia può essere eliminata.

std::string str = std::string("foo");

L'inizializzazione della copia lo trasforma efficacemente in std::string str("foo"); (ci sono piccole differenze).

Questo funziona anche con i valori di ritorno:

std::string func()
{
  return std::string("foo");
}

std::string str = func();

Senza copiare elision, ciò provocherebbe 2 chiamate al costruttore di spostamenti di std::string . Copia elision consente di chiamare il costruttore di movimento 1 o zero volte e la maggior parte dei compilatori sceglierà quest'ultimo.