array の初期化

昔、ネストした配列が初期化できなくて array を使うのを諦めたのですが、

を読んで、もしかしていけるんじゃないかと試してみました。


昔は

// これは OK
const int ar1[3][2] =
{
    { 1, 2 },
    { 3, 4 },
    { 5, 6 },
};
// これは NG
const std::array<std::array<int, 2>, 3> ar2 =
{
    { 1, 2 },
    { 3, 4 },
    { 5, 6 },
};

これがダメだったので諦めていたのですが、上記のを参考にして、

const std::array<std::array<int, 2>, 3> ar =
{
    {
        { 1, 2 },
        { 3, 4 },
        { 5, 6 },
    },
};

こうすればいけました。


構造体の初期化もできるかなーと思って試行錯誤してみたら、

const std::array<std::array<Hoge, 2>, 3> ar =
{
    {
        {
            {
                { 1, 1, 1 },
                { 2, 2, 2 },
            },
        },
        {
            {
                { 3, 3, 3 },
                { 4, 4, 4 },
            },
        },
        {
            {
                { 5, 5, 5 },
                { 6, 6, 6 },
            },
        },
    },
};

これでいけました。謎すぎる。


ほんとはどういう仕様でいけるのかを調べないといけないのでしょうけど、まあとりあえずネストした array もちゃんと初期化できるんだなーってことが分かったので満足です。
でもやっぱり気になるので誰か教えてください。