Что это значит, когда я использую 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
.