使用bind(func,_1,_2)函数评估2个变量函数

时间:2014-01-28 18:04:11

标签: c++ gcc bind

我正在测试一个示例代码来实现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,这件事让我发疯:(

0 个答案:

没有答案