Вот пример кода, который иллюстрирует проблему.
Он правильно компилируется и запускается , но редактор IntelliSense VS2010 жалуется на переменную hold
и показывает следующее сообщение
IntelliSense: нестатическая ссылка на член должна быть относительно
конкретный объект
class tester
{
public:
void test()
{
int outer[] = {1,2,3};
int inner[] = {4,5,6};
std::for_each(outer, outer + _countof(outer), [&](int o) {
std::for_each(inner, inner + _countof(inner), [&](int i) {
hold.push_back(i + o);
});
});
}
private:
std::vector<int> hold;
};
int main(int argc, char* argv[])
{
tester().test();
return 0;
}
NB. Хорошо, если существует только один уровень for_each (например, только внешний)
Кто-нибудь еще сталкивался с этим, и если да, есть ли способ немного изменить его, чтобы IntelliSense был доволен, или я застрял с красными волнистыми линиями?
UPDATE:
Я скачал предварительный просмотр VS11, он доволен кодом - никаких кривых строк, так что, по крайней мере, это было исправлено в следующем выпуске.