In fast jedem Beitrag, den ich auf SO sehe und an dem a beteiligt ist std::initializer_list, neigen die Leute dazu, einen std::initializer_listWert zu übergeben. Nach diesem Artikel:
http://cpp-next.com/archive/2009/08/want-speed-pass-by-value/
man sollte den Wert übergeben, wenn man eine Kopie des übergebenen Objekts erstellen möchte. Aber das Kopieren von a std::initializer_listist keine gute Idee
Durch das Kopieren von a werden
std::initializer_listdie zugrunde liegenden Objekte nicht kopiert. Es ist nicht garantiert, dass das zugrunde liegende Array existiert, nachdem die Lebensdauer des ursprünglichen Initialisierungslistenobjekts abgelaufen ist.
Warum wird eine Instanz davon oft nach Wert übergeben und nicht beispielsweise nach dem const&, was garantiert keine unnötige Kopie ergibt?