3

次のコードが違法なのはなぜですか?

for (int index=0; index<3; index++)
{
    cout << {123, 456, 789}[index];
}

これはうまくいきますが:

for (int value : {123, 456, 789})
{
    cout << value;
}

IDEOne のコード: http://ideone.com/tElw1w

4

2 に答える 2

5

はをstd::initializer_list提供しませんがoperator[]、 と のオーバーロードがあり、これは forbegin()end()基づく範囲が使用するものです。initializer_list実際、次のようにインデックスを作成できます

    for (int index=0; index<3; index++)
    {
        cout << begin({123, 456, 789})[index];
    }
于 2015-09-15T23:12:22.923 に答える