Este es el ejemplo más simple que pude encontrar que reproduce el problema.Referencia no definida a una variable local estática
template<class T>
struct X
{
static void foo()
{
static int z = 0;
[]{ z = 1; }();
}
};
int main()
{
X<int>::foo();
return 0;
}
Lo he intentado con MinGW 4.6 y 4.7, también g ++ 4.6 en Ubuntu y todos ellos me dan el error de enlace "referencia indefinida a` z '". Entonces eso me hace preguntarme si esto es legal. VC10 no tiene problema con eso.
Funciona si X es una clase normal en lugar de una plantilla. Además, no creo que esté relacionado con lambdas porque me da el error incluso si reemplazo el lambda con una clase local.
agregue la etiqueta C++ 11, tal vez le dará una mejor respuesta – marcinj