C ++中的for_each()

时间:2009-08-06 15:28:43

标签: c++ foreach compiler-errors

我已经在两台不同的机器上编译了我的代码,我认为它们具有相同的设置。但是,一个编译没有问题,另一个给出以下错误。

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

相关代码:

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

任何想法可能是什么问题? TIA。

2 个答案:

答案 0 :(得分:13)

尝试std::for_each()。也许它看不到命名空间。

答案 1 :(得分:11)

一个可能的问题是,第一个编译器在允许使用来自该命名空间的未修饰标识符(例如using namespace std;)之前需要for_each,而第二个编译器是否过度允许而不是要求它。

当然,正如其他答案和评论所指出的那样,可能有更好的选择,例如在每次出现时明确拼写std::for_each,或者使用使用声明 using std::for_each;)而不是更广泛的使用指令 using namespace std;) - 但这个(好的)建议不是回答你的问题,为什么一个编译器会诊断错误而另一个编译器没有; - )。