如何创建一个简单的boost :: lambda函数?

时间:2010-01-13 13:45:39

标签: boost boost-lambda

我正在尝试创建一个简单的函数,它可以进行简单的测试并返回true或false。

myfunct = (_3 < someArray[i]);

当我这样做时,我收到此错误:

error: no match for 'operator<' in '<unnamed>::_1 < depths[i]'

我希望得到与此相同的东西

bool myFunct(unsigned int a, unsigned int b, unsigned int c, unsigned int d)
{
   return c < 22; // Suppose 22 was in someArray[i]
}

2 个答案:

答案 0 :(得分:3)

你确定你的命名空间是对的吗?

应该是

using namespace boost::lambda;

boost::lambda::_1

请记住,占位符用于boost的其他部分或其他库中(可能会发生与本地TR1的冲突!),这可能会导致错误。

答案 1 :(得分:2)

以下编译没有任何错误,其余代码如何?

#include <boost/function.hpp>
#include <boost/lambda/lambda.hpp>

using namespace boost;
using namespace boost::lambda;

int main(void)
{
    int someArray[5];
    int i;
    function<bool(int,int)> f = (_1 < someArray[i]);
}