2016-11-30 112 views
1

我有以下一段代碼,發現我無法將lambda函數的輸出顯式轉換爲bool。我在在線IDE http://ideone.com/上驗證了這一點,並選擇了C++ 14。lambda函數返回類型不工作

#include <iostream> 
using namespace std; 

int main() { 
    int number = 10; 
    int bar = 6; 
    auto numberisLarger = [&]() -> bool {return number > bar;}; 
    bool isLarger = numberisLarger; 
    return 0; 
} 

但是,我收到編譯錯誤如下。

error: cannot convert 'main()::<lambda()>' to 'bool' in initialization 
    bool isLarger = numberisLarger; 

我明確地將其轉換爲布爾,爲什麼它不工作? 謝謝!

+1

'numberisLarger'是一個函數。 –

+1

這樣稱呼:'bool isLarger = numberisLarger();' – Amadeus

+1

投票結束爲「一個簡單的印刷錯誤」,因爲你的代碼缺乏是parens。如果您來自Pascal背景:所有函數都需要在C(++)中顯式調用。 – kay

回答

5

您需要執行lambda,就像您會使用常規函數一樣。

bool isLarger = numberisLarger();