Что это значит, когда я использую new auto
? Рассмотрим выражение:
new auto(5)
Каков тип динамически размещаемого объекта? Какой тип указателя он возвращает?
В данном контексте, 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*
—конец примера ]
Согласно пункту 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
,