1. ホーム
  2. c++

[解決済み] C++で[=]はどういう意味ですか?

2022-12-22 06:24:52

質問

知りたいのは [=] が何をするのか知りたいですか?簡単な例を示します。

template <typename T>
std::function<T (T)> makeConverter(T factor, T offset) {
    return [=] (T input) -> T { return (offset + input) * factor; };
}

auto milesToKm = makeConverter(1.60936, 0.0);

このコードは [] の代わりに [=] ?

と仮定します。

std::function<T (T)>

を取得する関数プロトタイプを意味します。 (T) を引数として取り、戻り値として T ?

どのように解決するのですか?

この [=] の一部です。 キャプチャリスト の一部です。これは、ラムダ式内のコードが初期化され、ラムダが生成されるときに使用するすべてのローカル変数のコピーを取得することをC++に伝えるものです。これは、ラムダ式が factoroffset であり、これらは関数内部のローカル変数である。

を置き換えると [=][] と書くと、ラムダ式内のコードが変数 offsetfactor を参照してください。多くのコンパイラーは、これを実行すると良い診断エラーメッセージを出しますので、試してみて何が起こるか見てみましょう!