Что это значит, когда я использую new auto? Рассмотрим выражение:
new auto(5)
Каков тип динамически распределенного объекта? Каков тип возвращаемого указателя?
Что это значит, когда я использую new auto? Рассмотрим выражение:
new auto(5)
Каков тип динамически распределенного объекта? Каков тип возвращаемого указателя?
В этом контексте auto(5) разрешается int(5).
Вы выделяете новый int из кучи, инициализированный на 5.
(Итак, он возвращает int *)
Цитата Энди Проула находчивый ответ с разрешения:
В параграфе 5.3.4/2 стандарта С++ 11:
Если спецификатор типа
autoпоявляется в типе-спецификаторе-seq идентификатора нового типа или типа-идентификатора нового выражения, new-expression должен содержать новый-инициализатор формы( assignment-expression )Выделенный тип выводится из нового-инициализатора следующим образом: пусть
eбудет выражением присваивания в new-initializer и T - идентификатор нового типа или идентификатор типа нового выражения, тогда назначенный тип является типом вычислено для переменнойxв изобретенной декларации (7.1.6.4):T x(e);[Пример:
new auto(1); // allocated type is int auto x = new auto(’a’); // allocated type is char, x is of type char*-end пример]
В параграфе 5.3.4/2 стандарта С++ 11:
Если спецификатор типа
autoпоявляется в типе-спецификаторе-seq идентификатора нового типа или типа-идентификатора нового выражения, new-expression должен содержать новый-инициализатор формы( assignment-expression )Выделенный тип выводится из нового-инициализатора следующим образом: пусть
eбудет выражением присваивания в new-initializer и T - идентификатор нового типа или идентификатор типа нового выражения, тогда назначенный тип является типом выведенный для переменнойxв изобретенной декларации (7.1.6.4):T x(e);[Пример:
new auto(1); // allocated type is int auto x = new auto(’a’); // allocated type is char, x is of type char*-end пример]
Следовательно, тип выделенного объекта идентичен выведенному типу изобретенного объявления:
auto x(5)
Что такое int.