Это запрещено, потому что struct
имеет const
членов:
ошибка: назначение места только для чтения array[0]
array[0] = e;
Если struct
имеет один const
член, целое struct
также нельзя назначить.
Если бы можно было назначить элементы массива подобным образом, можно было бы обойти константу любого члена struct
, например:
Expected replacement = {.number = array[0].number, .operand = newOperand}; // << Allowed
array[0] = replacement; // <<== This is not allowed
Компилятор помечает это назначение как ошибку ( demo ).
Если вам нужно сохранить const
, вам придется создавать свой массив с инициализаторами вместо использования присваиваний.