Странное поведение структур в C ++ [часть 1]

Рассматривать:

struct box
{
    int array[3];
};

int main()
{
    box a = {1};
}

Если вышесказанное работает в C ++, то почемуt следующая работа?

struct box
{
    int simple_int;
};

int main()
{
    box b = 2;
}

Какова причина?