¿Funcionará la deducción automática del tipo de devolución para main?
Seré capaz de hacer lo siguiente para la función principal en C++1y (C++14):
auto main()
{
// ...
}
Entonces, ¿el tipo devuelto será automáticamente int
aunque no necesitemos usar un return 0;
explícito?
1 answers
No, no se permitirá. El párrafo 7.1.6.4 / 10 del borrador estándar de C++14 N3690 especifica:
Si una función con un tipo de retorno declarado que usa un tipo de marcador de posición no tiene instrucciones
return
, el retorno type se deduce como si de una instrucciónreturn
sin operando en la llave de cierre de la función cuerpo. [...]
Esto significa que omitir una instrucción return
en main()
haría su tipo void
.
La norma especial introducida por el párrafo 3.6.1 / 5 acerca de fluir del final de main()
especifica:
[...] Si el control llega al final de
main
sin encontrar una instrucciónreturn
, el efecto es el de ejecutarreturn 0;
La redacción dice que el" efecto " durante la ejecución del programa es el mismo que si un return 0
estaba presente, no que una declaración return
se agregará al programa (lo que afectaría la deducción de tipo de acuerdo con la cita apartado).
EDITAR:
Hay un Informe de defectos para esto (cortesía de Johannes Schaub):
Propuesta de resolución (noviembre de 2013):
Cambio 3.6.1 [básico.empezar.main] paragraph 2 as follows:
Una aplicación no definirá previamente la función principal. Esta función no se sobrecargará. Tendrá un declarado tipo de retorno de tipo int, pero por lo demás su tipo es implementación-definida.
Todas las implementacionesUna aplicación permitirá tanto{[17]]}
- una función de
()
volviendoint
y- una función de (
int
, puntero a puntero achar
) devuelveint
Como el tipo...
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:22:59