1424 次
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 に答える