小编Pio*_*r99的帖子

C++ 11/g ++:lambda中需要std :: qualifier,尽管给出了"using namespace std"

我试图发现新的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)

c++ lambda g++ c++11

7
推荐指数
1
解决办法
1695
查看次数

标签 统计

c++ ×1

c++11 ×1

g++ ×1

lambda ×1