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 variablex
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 variablex
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