Puis-je liste d'initialisation d'un vecteur de mouvement-type seul?

Si je passe le code suivant à travers mon GCC 4.7 de l'instantané, il essaie de copier les unique_ptrs dans le vecteur.

#include <vector>
#include <memory>

int main() {
    using move_only = std::unique_ptr<int>;
    std::vector<move_only> v { move_only(), move_only(), move_only() };
}

Évidemment cela ne peut pas fonctionner, car std::unique_ptr n'est pas copiable:

erreur: utilisation de supprimé la fonction 'std::unique_ptr<_Tp, _Dp>::unique_ptr(const std::unique_ptr<_Tp, _Dp>&) [avec _Tp = int; _Dp = std::default_delete; std::unique_ptr<_Tp, _Dp> = std::unique_ptr]'

Est GCC corriger en essayant de copier les pointeurs de la liste d'initialiseur?

Visual Studio et clang a le même comportement

OriginalL'auteur R. Martinho Fernandes | 2011-12-12