Это самый простой пример, который я мог бы придумать, чтобы воспроизвести проблему.Неопределенная ссылка на статическую локальную переменную
template<class T>
struct X
{
static void foo()
{
static int z = 0;
[]{ z = 1; }();
}
};
int main()
{
X<int>::foo();
return 0;
}
Я пробовал с MinGW 4.6 и 4.7, а также г ++ 4.6 в Ubuntu и все они дают мне ошибки ссылку «неопределенная ссылка на` г '». Итак, теперь это заставляет меня задаться вопросом, является ли это даже законным. У VC10 нет проблем с этим.
Он работает, если X является нормальным классом вместо шаблона. Кроме того, я не думаю, что это связано с lambdas, потому что я получаю ошибку, даже если я заменю лямбда локальным классом.
Добавить C++ 11 tag, может быть, это даст вам лучший ответ – marcinj