2016-11-30 135 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();