compiler c++ c++11 dynamic-allocation type-deduction

compiler - c++11 download



¿Qué hace `new auto`? (2)

¿Qué significa cuando uso new auto ? Considera la expresión:

new auto(5)

¿Cuál es el tipo de objeto asignado dinámicamente? ¿Cuál es el tipo de puntero que devuelve?


En este contexto, auto(5) resuelve en int(5) .

Está asignando un nuevo int desde el montón, inicializado a 5 .

(Por lo tanto, está devolviendo un int * )

Citando la ingeniosa respuesta de Andy Prowl, con permiso:

Según el párrafo 5.3.4 / 2 de la norma C ++ 11:

Si el auto tipo-especificador aparece en el tipo-especificador-seq de un nuevo tipo-id o tipo-id de una nueva-expresión , la nueva-expresión contendrá un nuevo inicializador de la forma

( assignment-expression )

El tipo asignado se deduce del nuevo inicializador de la siguiente manera: Sea e la expresión-asignación en el nuevo inicializador y T sea el nuevo tipo-id o tipo-id de la nueva-expresión , entonces el tipo asignado es el Tipo deducido para la variable x en la declaración inventada (7.1.6.4):

T x(e);

[ Ejemplo :

new auto(1); // allocated type is int auto x = new auto(’a’); // allocated type is char, x is of type char*

- ejemplo final ]


Según el párrafo 5.3.4 / 2 de la norma C ++ 11:

Si el auto tipo-especificador aparece en el tipo-especificador-seq de un nuevo tipo-id o tipo-id de una nueva-expresión , la nueva-expresión contendrá un nuevo inicializador de la forma

( assignment-expression )

El tipo asignado se deduce del nuevo inicializador de la siguiente manera: Sea e la expresión-asignación en el nuevo inicializador y T sea el nuevo tipo-id o tipo-id de la nueva-expresión , entonces el tipo asignado es el Tipo deducido para la variable x en la declaración inventada (7.1.6.4):

T x(e);

[ Ejemplo :

new auto(1); // allocated type is int auto x = new auto(’a’); // allocated type is char, x is of type char*

- ejemplo final ]

Por lo tanto, el tipo de objeto asignado es idéntico al tipo deducido de la declaración inventada:

auto x(5)

Que es int