web-dev-qa-db-ja.com

初期化リストがVisual Studio 2012のベクターで機能しない

可能性のある複製:
Visual Studio 2012のC++ 11機能

それで、私は Wikipedia を介してC++ 11イニシャライザリストを今日読んでいて、C++ 11が標準コンテナの次の構文をサポートしていることを確認しました。

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

Visual Studio 2012で次のことを試みると、コンパイルエラーが発生しますC2552: 'vecs' : non-aggregates cannot be initialized with initializer list

これが私のコードです:

#include <vector>

using namespace std;

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

VS2012はイニシャライザリストをサポートしていませんか、それとも単に誤解していますか?

ありがとう!

25
Polaris878

Visual Studio 2012は初期化子リストをサポートしていません。

まあ、それは2012年11月のCTPまでありませんでした。今では、少なくともアルファ状態ではそうなります。確かに、初期化リストを標準ライブラリ自体に配置しているため、このコードはまだ機能しません。

38
Nicol Bolas