#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.
Комментариев нет:
Отправить комментарий