2016-11-30 9 views
1

次のコードがあり、明示的にラムダ関数の出力をboolに変換できないことがわかりました。私はこれをオンラインIDE http://ideone.com/で検証しています。私はC++ 14を選択します。ラムダ関数の戻り値の型が正しく動作しない

#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; 

明示的にboolに変換しましたが、なぜ機能しないのですか? ありがとう!

+1

「numberisLarger」は関数である。 –

+1

'bool isLarger = numberisLarger();' – Amadeus

+1

すべてのコードが不足しているため、 "シンプルな誤植"と票決しました。パスカルの背景から来た場合:すべての関数をC(++)で明示的に呼び出す必要があります。 – kay

答えて

5

通常の機能と同じように、ラムダを実行する必要があります。

bool isLarger = numberisLarger(); 
関連する問題