for_each () в C ++ - PullRequest
       27

for_each () в C ++

4 голосов
/ 06 августа 2009

Я скомпилировал свой код на двух разных машинах, которые, как я думал, имели одинаковые настройки. Однако один компилируется без проблем, а другой выдает следующую ошибку.

LogEventReader.cpp(320) : error C3861: 'for_each': identifier not found, even with argument-dependent lookup

Соответствующий код:

#include <algorithm> 
...
for_each(messages.begin(), messages.end(), processXMLMessage);

Есть идеи, в чем может быть проблема? ТИА.

Ответы [ 2 ]

13 голосов
/ 06 августа 2009

вместо std::for_each(). Возможно, он не видит пространство имен.

11 голосов
/ 06 августа 2009

Вероятная проблема заключается в том, что первый компилятор хочет получить using namespace std;, прежде чем разрешить использование недекорированных идентификаторов из этого пространства имен (например, for_each), тогда как второй является чрезмерно разрешающим и не требует его.

Конечно, как горячо отмечали другие ответы и комментарии, есть, вероятно, предпочтительные альтернативы, такие как явное написание std::for_each в каждом случае или использование с использованием декларации (using std::for_each;) вместо более широкого с использованием директивы (using namespace std;) - но этот (хороший) совет не является ответом на ваш вопрос о том, почему один компилятор будет диагностировать ошибка, пока другой нет; -).

...