Недавно обнаружил странный "баг" или "недофичу" в реализации лямбда-функций vs2010: template< typename Anc > class A : public Anc{ // typedef SomeJobClassSpec JOB; // void something(){ std::for_each( Some.begin(), Some.end(), []( SOME&x ){ new JOB::TASK( ... ); // ошибка: JOB не определен!!! } ); } }; Решение: template< typename Anc > class A : public Anc{ // typedef SomeJobClassSpec JOB; // void something(){ std::for_each( Some.begin(), Some.end(), []( SOME&x ){ typedef JOB _JOB; // new _JOB::TASK( ... ); // OK!!! } ); } }; Выходит, typedef в лямбдах видит несколько больше?
Ответ
Это, должно быть, баг VS 2010. У gcc-4.7.2 проблем с похожим кодом нету: http://ideone.com/Pi6slP
Комментариев нет:
Отправить комментарий