std::array+初期化リストの不可解な挙動

std::arrayを構造体の初期化リストで初期化しようとすると挙動が不可解なのでメモ。
(環境はXCode4.5)

// 0
まず単純なintのarrayだと、波括弧ひとつで期待した通りに書ける

// 1
ところが構造体の初期化リストの入った配列の初期化リストを渡すと、XCode4.5の環境では「要素数過多」とかいう意味不明なエラーが出る。

// 2
ググったところ、波括弧をひとつ余計につけるとエラーが出なくなるっていう情報があったので試したら本当に大丈夫だった。( std::arrayは構造体の初期化が無理なのかと思ったらいけた
この余分な波括弧は何を表してるんだろう。。。? 試しにさらにもうひとつ波括弧を増やしたらエラーが出た。やみくもに増やせばいいってもんでもないらしい。

// 3
いろいろ試してみたが、どうやらエラーになるのは「配列の第一要素が波括弧で始まるかどうか」らしい。続く要素は関係ない。第一要素は波括弧で始まりさえしなければok。

以上から、std::arrayを初期化リストで初期化する場合に第一要素が ‘{‘ で始まるのはエラー で、これを回避するには、

・全体に波括弧をひとつ余分にかぶせる
・第一要素が波括弧で始まらないようにする(明示的なコンストラクタ呼び出しにするとか、波括弧の要らない単一要素での初期化にするとか)

みたいな対策が必要そう。。。。

これが納得いかないのは、std::vectorはこんなことなくてフツーに

って書けるのですよ。

あー、なんか納得がいかないっ!!!!!!