initializer_list und move-Semantik

Bin ich erlaubt, sich zu bewegen, Elemente aus einem std::initializer_list<T>?

#include <initializer_list>
#include <utility>

template<typename T>
void foo(std::initializer_list<T> list)
{
    for (auto it = list.begin(); it != list.end(); ++it)
    {
        bar(std::move(*it));   //kosher?
    }
}

Seit std::intializer_list<T> erfordert spezielle compiler und Aufmerksamkeit nicht Wert-Semantik wie normale Container der C++ - standard-Bibliothek, I ' D rather be safe than sorry und Fragen.

Die core-Sprache definiert, die das Objekt bezeichnet, die durch eine initializer_list<T> werden nicht-const. Wie initializer_list<int> bezieht sich auf int Objekte. Aber ich denke, das ist ein Mangel - es ist vorgesehen, dass der Compiler die statisch zuweisen einer Liste im nur-lese-Speicher.

InformationsquelleAutor fredoverflow | 2011-11-19

Schreibe einen Kommentar