Являются ли «анонимные структуры» стандартными? И действительно, что они?
MSDNсчитает что анонимные структуры нестандартны в C ++:
Расширение Microsoft C позволяет объявлять структурную переменную в другой структуре, не называя ее имени. Эти вложенные структуры называются анонимными структурами. C ++ не допускает анонимных структур.
Вы можете получить доступ к членам анонимной структуры, как если бы они были членами в содержащей структуре.
Мне сказали, что эта функция не обязательно такая же, как просто создание безымянной структуры, но я не вижу различия в терминах стандартной формулировки.
C ++ 11 говорит:
[C++11: 9/1]
: [..] A класса спецификатор чьякласс-руководитель опускает-Имя-руководитель класса определяет безымянный класс.
и обеспечивает полную грамматическую конструкцию для определения типа, в котором отсутствует имя.
C ++ 03 не имеет такой явной формулировки, но аналогичным образом указывает, чтоidentifier
в определении типа является необязательным, и делает ссылку на «безымянные классы» в9.4.2/5
а также3.5/4
.