我已经在两台不同的机器上编译了我的代码,我认为它们具有相同的设置。但是,一个编译没有问题,另一个给出以下错误。
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。
答案 0 :(得分:13)
尝试std::for_each()
。也许它看不到命名空间。
答案 1 :(得分:11)
一个可能的问题是,第一个编译器在允许使用来自该命名空间的未修饰标识符(例如using namespace std;
)之前需要for_each
,而第二个编译器是否过度允许而不是要求它。
当然,正如其他答案和评论所指出的那样,可能有更好的选择,例如在每次出现时明确拼写std::for_each
,或者使用使用声明 (using std::for_each;
)而不是更广泛的使用指令 (using namespace std;
) - 但这个(好的)建议不是回答你的问题,为什么一个编译器会诊断错误而另一个编译器没有; - )。