variable "auto" utilizada en lambda en su propio inicializador
Hoy encontré este código
#include <cstdio>
auto terminal = [](auto term)
{
return [=] (auto func)
{
return terminal(func(term));
};
};
Sorprendentemente, GCC lo acepta . Clang lo rechaza porque usa terminal
en su propio intializador y es declarado auto
.
Estaba esperando el error que clang dio, pero ¿es en realidad mal formado? ¿O debe aceptarse el código?
35
Author: Johannes Schaub - litb, 2014-09-06
1 answers
Yo creo esto se encuentra en §7.1.6.4 [dcl.spec.auto]/p11:
Si se necesita el tipo de una entidad con un tipo de marcador de posición sineducar para determinar el tipo de expresión, el programa está mal formado.
Necesita el tipo de terminal
para determinar el tipo de la expresión id terminal
en return terminal(func(term));
(editado, hat tip @Richard Smith), pero en el punto de esa expresión no se puede deducir el tipo de terminal
todavía.
15
Author: T.C.,
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
2014-09-05 21:53:30
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
2014-09-05 21:53:30