examples - std c++
Variable "auto" utilizada en lambda en su propio inicializador (1)
Creo que esto se encuentra en §7.1.6.4 [dcl.spec.auto] / p11:
Si se necesita el tipo de entidad con un tipo de marcador de posición no deducido para determinar el tipo de expresión, el programa está mal formado.
Necesita el tipo de terminal
para determinar el tipo de terminal
expresión id en el terminal
de return terminal(func(term));
(editado, hat tip @Richard Smith), pero en el punto de esa expresión todavía no se puede deducir el tipo de terminal
.
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 el terminal
en su propio inicializador y se declara auto
.
Esperaba el error que dio el clang, pero ¿está realmente mal formado? ¿O debe el código ser aceptado?