Похоже на ошибку в книге ... вы определенно должны назвать тип или псевдоним типа (т. Е. typedef
), поскольку C ++ является языками со строгой типизацией.
Вот что такоеСпецификация ++ 03 указывает на объекты, объявления и определения:
Раздел 1.8 / 1:
Свойства объекта определяются при создании объекта.Объект может иметь имя (пункт 3).Срок хранения объекта (3.7) влияет на его время жизни (3.8). Объект имеет тип (3.9).Термин тип объекта относится к типу, с которым создается объект.
Затем в разделе 3.1 / 1:
Объявление представляет собой определение ... [примечание: остальная часть абзаца является исключением из этого правила и опущена, поскольку в данном случае они неприменимы]
Затем в разделе 3.1 /6:
Программа плохо сформирована, если определение какого-либо объекта придает объекту неполный тип
Наконец, в разделе 3.9.2 / 1 говорится:
... термин тип объекта (1.8) включает в себя cv-квалификаторов , указанных при создании объекта.Наличие спецификатора const в decl-specier-seq объявляет объект const-qualified тип объекта;такой объект называется const объектом....
Таким образом, согласно 3.9.2 / 1, const
является классификатором, а не типом, и как таковой, он должен квалифицировать допустимый неквалифицированный тип.Во-вторых, в данном примере, согласно 3.1 / 1, объявление size
также является определением, и поэтому объект size
должен иметь связанный тип, или программа некорректна в соответствии с 3.1 / 6.