我正在尝试创建一个简单的函数,它可以进行简单的测试并返回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]
}
答案 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]);
}