25

重複の可能性:VisualStudio2012
のC++11機能

それで、私は今日ウィキペディアを介して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は初期化リストをサポートしていませんか、それとも私は何かを誤解していますか?

ありがとう!

4

1 に答える 1

38

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

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

于 2012-09-29T16:32:18.613 に答える