[=]
が何をするのか知りたいですか?ここに短い例があります
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++にラムダ式内のコードが初期化され、ラムダが作成時に使用するすべてのローカル変数のコピーを取得するようになります。これは、ラムダ式が関数内のローカル変数であるfactor
およびoffset
を参照できるようにするために必要です。
[=]
を[]
に置き換えると、ラムダ式内のコードはoffset
およびfactor
が参照する変数を認識できないため、コンパイラエラーが発生します。 。これを行うと、多くのコンパイラーが適切な診断エラーメッセージを表示するため、試してみて何が起こるかを確認してください。
lambda キャプチャリストです。ラムダで変数を使用可能にします。値でコピーする[=]
、または参照で渡す[&]
を使用できます。