initializer_list et la sémantique de déplacement

Suis-je autorisé à déplacer les éléments d'un 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?
    }
}

Depuis std::intializer_list<T> nécessite un compilateur attention et n'a pas de valeur sémantique comme les conteneurs normaux de la norme C++ de la bibliothèque, je préfère être sûr que désolé et demander.

  • Le langage de base définit que l'objet visé par une initializer_list<T> sont non-const. Comme, initializer_list<int> se réfère à int objets. Mais je pense que c'est un défaut, il est prévu que les compilateurs peuvent allouer de manière statique une liste en mémoire en lecture seule.
InformationsquelleAutor fredoverflow | 2011-11-19