web-dev-qa-db-fra.com

Liste d'initialistes ne fonctionnant pas avec Vector dans Visual Studio 2012?

Dupliquer possible:
[.____] C++ 11 fonctionnalités dans Visual Studio 2012

Je lisais donc des listes d'initialiseurs C++ 11 à la fois via Wikipedia et a vu que C++ 11 prend en charge la syntaxe suivante pour les conteneurs standard:

std::vector<std::string> v = { "xyzzy", "plugh", "abracadabra" };
std::vector<std::string> v({ "xyzzy", "plugh", "abracadabra" });
std::vector<std::string> v{ "xyzzy", "plugh", "abracadabra" }; 

Lorsque j'essaie ce qui suit dans Visual Studio 2012, j'obtiens l'erreur de compilation C2552: 'vecs' : non-aggregates cannot be initialized with initializer list

Voici mon code:

#include <vector>

using namespace std;

int main() {
    vector<string> vecs = {"h", "g", "e"};
}

VS2012 ne prend-il pas en charge les listes d'initialistes ou je suis juste mal compris quelque chose?

Merci!

25
Polaris878

Visual Studio 2012 ne prend pas en charge les listes d'initialistes.

Eh bien, ce n'est pas jusqu'à la CTP de novembre 2012. Maintenant, il fait au moins dans un état alpha. Constituée, ce code ne fonctionnera toujours pas car ils mettent toujours des listes d'initialisateur dans la bibliothèque standard elle-même.

38
Nicol Bolas