2010-01-13 41 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

相關問題