5
4

2 に答える 2

9

関数の結果と関数自体の間で混乱しているようです。この行で

auto result = [&val1, &val2](){return (val1 + val2);};

ラムダ関数 ( の右側=) を作成し、それを という変数に割り当てますresult。ラムダ関数の戻り値のauto型ではなく、ラムダ関数を保持する変数の型があります。

戻り値の型を明示的にしたい場合は、次のようにします。

auto result = [&val1, &val2]() -> int {return (val1 + val2);};

の型をresultより明示的にしたい場合は、次を使用できますstd::function

std::function<int()> result = [&val1, &val2]() {return (val1 + val2);};

また、resultは関数なので、次のように使用しますresult

std::cout << result() << "\n";
于 2013-06-04T13:01:59.830 に答える
3

あなたの例でresult は、関数です(匿名関数を実行しないことに注意してください)。ラインで

std::cout << "Result: " << [&val1, &val2](){return (val1 + val2) ;} << '\n';

関数を適用した結果ではなく、関数を出力しようとしています。に変更します

std::cout << "Result: " << [&val1, &val2](){return (val1 + val2) ;}() << '\n';

と の合計を出力しval1ますval2

于 2013-06-04T13:03:01.543 に答える