我试图发现新的C++ 11标准的一些好处(使用g ++ 4.6.2).在一个"all_of"算法函数中使用lambdas,我遇到了std :: qualifier的一个奇怪问题.
我正在"使用"std命名空间,如代码片段的开头所示.这使得for循环中的变量声明定义明确.
但是,我在"all_of"算法中使用的lambda参数中尝试了相同的操作.在我意识到完整的std :: qualified std :: pair可以在那里工作之前,我遇到了几个难以理解的错误消息,但只有一对没有.
我错过了一个重点吗?lambda的声明发生在这个文件中,所以命名空间在这里仍然应该是活动的,对吧?或者所需的std :: qualifier是否依赖于不同文件中的某些STL代码?或者它可能是g ++中的错误?
最好的问候,彼得
PS:代码编译没有警告粘贴在这里,但删除all_of lambda中的std ::,我收到一条错误消息.
#include <iostream>
#include <memory>
#include <map>
#include <string>
#include <algorithm>
#include <utility>
using namespace std;
void duckburg() {
const int threshold = 100;
map <string, int> money;
money["donald"] = 200;
money["daisy"] = 400;
money["scrooge"] = 2000000;
// obviously, an "auto" type would work here nicely,
// but this way my problem is illustrated more clearly:
for (const pair <string, …Run Code Online (Sandbox Code Playgroud)