Страницы

Поиск по вопросам

четверг, 26 декабря 2019 г.

typedef в лямбда-выражениях

#visual_cpp #typedef #cpp11 #cpp #lambda


Недавно обнаружил странный "баг" или "недофичу" в реализации лямбда-функций 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 в лямбдах видит несколько больше?    


Ответы

Ответ 1



Это, должно быть, баг VS 2010. У gcc-4.7.2 проблем с похожим кодом нету: http://ideone.com/Pi6slP.

Комментариев нет:

Отправить комментарий