我正在测试一个示例代码来实现bind(func,_1,_2)函数。代码如下:
#include <functional>
#include <iostream>
using namespace std;
using namespace std::placeholders;
int multiply(int a, int b)
{
return a * b;
}
int main()
{
auto f = bind(multiply, 5, _1);
for (int i = 0; i < 10; i++)
{
cout << "5 * " << i << " = " << f(i) << endl;
}
return 0;
}
一个非常简单的代码,应该只返回5的前9个倍数。
现在,我已经更新了我的gcc编译器(基本上删除了旧的编译器并完成了普通的安装过程,从4.2.1到4.6 - 不知道为什么它没有下载最新直接...)但我不确定g ++命令是否使用最新版本。如果我按下
g++ --version
我得到了
g++ (GCC) 4.6.0
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
然而,当我尝试编译我的代码时,这就是我得到的:
test.cpp:5:17: error: ‘placeholders’ is not a namespace-name
test.cpp:5:29: error: expected namespace-name before ‘;’ token
test.cpp: In function ‘int main()’:
test.cpp:14:10: error: ‘f’ does not name a type
test.cpp:17:44: error: ‘f’ was not declared in this scope
我不明白。命名空间应该在标题内,标题应该在我拥有的gcc版本(4.6.0)内,但我仍然会遇到编译错误 帮助pleeeease,这件事让我发疯:(