Как инициализируется целое число как "a = {1,}"?

Я нашел этот странный синтаксис:

int a = {1,};

И он работает во всех компиляторах, которые я пробовал. Как он компилируется?

EDIT: Я думал, что скалярные инициализаторы могут содержать только один элемент, порождая мой вопрос. Извините за все проблемы.

Ответы

Ответ 1

Как указано Matt McNab в комментариях, синтаксис скопированного инициализированного списка одинаковый независимо от того, используете ли вы его для инициализации скаляра или чего-то еще.

С++ 11 §5.17 состояния

В правой части

может появиться список бит-init-list.
  • присвоение скаляру, и в этом случае список инициализаторов должен иметь не более одного элемента.

Определение braced-init-list (из §8.5):

braced-init-list:
  { initializer-list ,opt }
  { }

где "opt" означает, что конечная запятая является необязательной.