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

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

new auto(5)

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

21

Решение

В данном контексте, auto(5) решает в int(5),

Вы выделяете новый int из кучи, инициализирован до 5,

(Итак, он возвращает int *)

Цитирую находчивый ответ Энди Prowl с разрешения:

Согласно пункту 5.3.4 / 2 стандарта C ++ 11:

Если auto спецификатор типа появляется в Тип Спецификатор-сл из новый тип-идентификатор или же тип-идентификатор из новое выражение,
новое выражение должен содержать новый инициализатор формы

( assignment-expression )

Выделенный тип выводится из нового инициализатора следующим образом: e быть Назначение выражение в
новый инициализатор и Т быть новый тип-идентификатор или же тип-идентификатор из новое выражение, тогда выделенный тип является типом
выводится для переменной 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*

конец примера ]

28

Другие решения

Согласно пункту 5.3.4 / 2 стандарта C ++ 11:

Если auto спецификатор типа появляется в Тип Спецификатор-сл из новый тип-идентификатор или же тип-идентификатор из новое выражение,
новое выражение должен содержать новый инициализатор формы

( assignment-expression )

Выделенный тип выводится из нового инициализатора следующим образом: e быть Назначение выражение в
новый инициализатор и Т быть новый тип-идентификатор или же тип-идентификатор из новое выражение, тогда выделенный тип является типом
выводится для переменной 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*

конец примера ]

Следовательно, тип выделенного объекта идентичен выведенному типу изобретенного объявления:

auto x(5)

Который int,

12

По вопросам рекламы [email protected]