Недавно, когда отвечая на вопрос, я понял, что оператор запятой разрешен в постоянном выражении в С++ 11, если выражение окружено ()
, например:
int a[ (1, 2) ] ;
Pre С++ 11 запрещено использовать оператор запятой в постоянном выражении, из проекта pre С++ 11 standard раздел 5.19
Постоянные выражения, в которых говорится (акцент мой):
[...] В частности, кроме выражения sizeof, функций, класса объекты, указатели или ссылки не должны использоваться и присваивание, инкремент, декремент, функция-вызов или запятые не должны быть б.
Почему оператор запятой не разрешен в постоянном выражении pre С++ 11 и почему это ограничение было отменено?