1
私は宿題にラムダを使用しています。私が見てきたことは、匿名でカプセル化された種類の関数です。私はmax()のような与えられた2つの値の最大値を単純に返す小さなテストを行いました。ラムダを使用しても変換エラーが発生します
double testx, testy = 0.0;
// Give the above some values
double maxi = [testx, testy]() {return (testx > testy ? testx : testy); };
このラムダをコンパイルするたびに、ビルドエラーが発生します。 (コードC2440)
からのNOの適切な変換関数は、 "ラムダ[]ダブル() - >ダブル" 私はこの例よりも試みた
に "ダブル" は存在し、それぞれがすべき上記のエラーでそれぞれの戻り値の型で作成されます。彼らの目的のためにラムダを避ける答えを与えられたVisual Studioの以前のバージョンで私と同じエラーが与えられたように見えるrelated questionがあります。
余分な括弧はどのように機能を追加しますか? – BreakinDragon
これは2段階のアクションです。最初にラムダオブジェクトを作成し、すぐに呼び出すことができます(ラムダ自体をラップする括弧を省略し、最後のペアだけを残してもかまいませんが、これは少しはっきりしていると思います)。これはC++でlambdaを使用する一般的な方法ではなく、すべての構文オプションを示すためにのみ表示されていることに注意してください。 – eran