Когда mutable
спецификатор используется в объявлении нестатического члена данных, данные являются изменяемыми независимо от того, рассматривается ли остальная часть объекта как const. С этим фактом у нас может сложиться впечатление, что mutable
Спецификатор такой же вещи, как const
классификатор, который оказывается неправдой. На самом деле, язык классифицирует mutable
спецификатор как спецификатор класса хранения. Это довольно нелогично, потому что mutable
не указывает продолжительность хранения.
Каковы причины этого дизайнерского решения?
Что сделало бы это менее логичным, чем казалось бы, если бы mutable
был классификатор?
Какие преимущества делает его спецификатором класса хранилища?
резюме-классификаторs изменять / ограничивать семантику объекта; mutable
не. Быть частью этого типа было бы излишним практически во всех сценариях, при этом требуя больше абзацев о преобразовании указателей и т. Д.
Таким образом было решено сделать это Децл спецификатор это не Тип Спецификатор. поскольку const
может привести к тому, что объект будет помещен в защищенную от записи память, mutable
может привести к тому, что объект не будет помещен в такое хранилище, предполагая, что это хранения класса спецификатор.
Других решений пока нет …