6

ラムダ式を使用して変数を初期化しようとしています。これが可能かどうかは聞いていませんが、可能ですか?例えば:

int i([]() { return 1; });

返す

error C2440: 'initializing' : cannot convert from 'wmain::<lambda_b35514739a4854f3d329a617eabe58c1>' to 'int'

この操作は可能ですか?私の構文は単に間違っていますか?

4

2 に答える 2

16

ラムダの評価結果ではなく、ラムダオブジェクトで変数を初期化しようとしています:

int i([]() { return 1; }());
//                      ^^
于 2013-07-29T19:00:52.217 に答える
10

ラムダを呼び出す必要があります:

int i( []() { return 1; }() );
                      // ^^

ラムダ自体は、クロージャー オブジェクトと呼ばれる一時的な prvalue を生成する式です。これらは に変換できませんint

于 2013-07-29T19:00:10.207 に答える