Для следующего кода:
struct B
{
void g()
{
[]() { B::f(); }();
}
static void f();
};
g++ 4.6 дает ошибку:
test.cpp: В лямбда-функции:
test.cpp: 44: 21: ошибка: 'this' не была записана для этой лямбда-функции
(Интересно, что g++ 4.5 компилирует код отлично).
Является ли это ошибкой в g++ 4.6, или действительно ли необходимо зафиксировать параметр 'this', чтобы иметь возможность вызвать статическую функцию-член? Я не понимаю, почему это должно быть, я даже квалифицировал вызов с помощью B::
.