C++中的for_each()

Jus*_*tin 5 c++ foreach compiler-errors

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

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

相关代码:

#include <algorithm> 
...
for_each(messages.begin(), messages.end(), processXMLMessage);
Run Code Online (Sandbox Code Playgroud)

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

Sor*_*tis 13

试着std::for_each()改为.也许它看不到命名空间.


Ale*_*lli 12

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

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

  • 使用命名空间std是邪恶的 - 谁知道你什么时候会发生名字冲突? (5认同)