Какая «альтернативная грамматика» [[появляется помимо атрибутов?

Я этого не понимаю:

(7.6.1) Два последовательных левых символа квадратных скобок появляются только тогда, когда вводит атрибут -специальный. [Примечание: если две последовательные левые квадратные скобки появляются там, где спецификатор атрибута не разрешен, программа имеет неправильный формат , даже если скобки соответствуют альтернативной грамматике производство. —в конце примечания] [Пример: (немного изменено из исходного кода)

// ...
void f() {
int x = 42, y[5];
  // ...
  y[[] { return 2; }()] = 2; // error even though attributes are not allowed
                             // in this context.
}

Для какой альтернативной грамматики можно использовать [[? Будет ли пример действительным, если атрибуты не существуют (и что делает пример)?

6
задан Pubby 26 November 2011 в 07:04
поделиться