Заодно на виртуальную машину поставил windows7 + msvs 2010beta. Там тоже частично реализован C++0x (lambda, auto, static_assert).
Интересно сравнить подоходы реализации тех же лямбд и замыканий у микрософта и gcc.
Пока что нашёл баг в студии.
В таком коде
auto a = []() { return [](){return 0.0f;}; };
Компилятор ругается, что лямбда верхнего уровня имеет возвращаемый тип void, поэтому функция не должна ничего возвращать. Но ведь тип возвращаемого значения должен выводится, если он не указан, а не считаться что он void?
gcc на этой строчке вообще умирает с sigsegv
upd.
Ещё баг в gcc нашёл.
Такой вот код:
function Foo::GetEventHandler()
{
return [=](){this->onSomeEvent();};
}
при попытке вызова функтора получим sigsegv, так как this почему-то в лямбду захватывается нулевой.
если написать вот так:
return [this](){this->onSomeEvent();};
то всё ок.
в vc10 корректно работают оба варианта