Для этого просто нет синтаксиса, вот и все.
Вы можете иметь декларативное утверждение или другое выражение или выражение другого типа. Объявление просто нельзя объединить с операциями над объявленным объектом.
Можем ли мы ввести для этого синтаксис в язык? Конечно, наверное. Но это усложнит правила и ничего не даст нам. Код, который инициализирует, затем немедленно присваивает, вероятно, должен был быть правильно инициализирован для начала.
Ваш контрпример int x = 99
не честен, потому что =
вводит в заблуждение: вы на самом деле просто делаете объявление с инициализацией, не присвоение. Это [своего рода] эквивалент int x(99);
, с синтаксисом =
, по существу, сохраненным для совместимости с C. И вы можете иметь только один инициализатор.