Подтвердить что ты не робот

Что делает "новый авто"?

Что это значит, когда я использую new auto? Рассмотрим выражение:

new auto(5)

Каков тип динамически распределенного объекта? Каков тип возвращаемого указателя?

4b9b3361

Ответ 1

В этом контексте 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 пример]

Ответ 2

В параграфе 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.