リスト初期化コンパイルエラー

C ++ 11標準8.5.4リストの初期化の例:

std::map anim = { {"bear",4}, {"cassowary",2}, {"tiger",7} };

しかし、私はVC10、gcc 4.6、Comeauを試しました。何故ですか ?

6
@ JoachimPileborg私はそれがこの質問への正解であると思います:)
追加された 著者 BЈовић,
C ++ 11標準は非常に新しく、すべてのコンパイラとライブラリがまだすべてをサポートしているわけではありません。
追加された 著者 Some programmer dude,
gcc 4.5.1に関する私のための作品。あなたが得たエラーは何ですか?おそらく -std = c ++ 0x を有効にしていないでしょうか?
追加された 著者 Alok Save,
GCC 4?5、4.6、4.7は、 -std = c ++ 0x を指定するとコンパイルします。
追加された 著者 Mat,
C ++ 11のリリース日とgcc 4.6.0のリリース日を比較したいかもしれません...
追加された 著者 PlasmaHH,

1 答え

コメントのすべての答えに感謝します。

私はその後、C ++ 98と03の標準を確認しました。そして確かに、8.5.4は間違いなくC ++ 11の新しい秒です! そのため、すべてのコンパイラで完全にサポートされていません。

フラグ-std = c ++ 0xをgcc 4.6.1で追加したら、これでコンパイルが完了します。

参照が必要なもののテストコードを追加する:

#include 
#include 
#include 
#include 

using namespace std;
int main() 
{
    std::map collection = {{"bear",4}, {"cassowary",2}, {"tiger",7}};
    for(auto it: collection)
        std::cout << it.first << " has value " << it.second << std::endl;
    return 0;
}
3
追加された
@ TomGarske:種類のリマインダに感謝、ちょうど:)
追加された 著者 Gob00st,