2010-01-13 59 views
2

我试图创建一个简单的函数,使得一个简单的测试并返回true或false。如何创建一个简单的boost :: lambda函数?

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] 
} 

回答

3

你确定你有正确的命名空间?

这应该是

using namespace boost::lambda; 

boost::lambda::_1 

记住占位符升压的其他地区,或其他图书馆的使用(与本地TR1冲突可能发生!),这可能会导致错误。

+0

是的,我认为这是我的问题。我虽然在上班途中(在发布这个问题之后),但由于我的代码在家,无法测试它。你刚刚确认了它。谢谢。 – 2010-01-13 14:17:35

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]); 
} 
+0

+1:对于实际代码 - 现在无法访问编译器,所以我不能提供:/ – 2010-01-13 15:17:59

相关问题