C++ ラムダ式の型推論により、コンパイラーはラムダの戻り値の型を決定できます。ラムダに return ステートメントが 1 つしかない場合、戻り値の型は戻り値の型になります。ラムダに複数の return ステートメントがある場合、戻り値の型はこれらの型のいずれかになります (コンパイラーは警告を発行する可能性があります)。 return文がない場合、戻り値の型はvoidになります。
C++ でのラムダ式の型推論
ラムダ式は、実行時に匿名関数の作成を可能にする C++ の強力な構文機能です。ラムダ式の型推論は、コンパイラがラムダ式の戻り値の型を決定できるようにする重要な機能です。
構文
ラムダ式は通常、次の構文を使用して定義されます:
auto lambda = [capture list] (parameter list) -> return-type { // lambda function body }
ここで:
[キャプチャ リスト]
は、ラムダ式が外部にアクセスできるものを指定するオプションのキャプチャ リストです。変数。 [capture list]
是一个可选的捕获列表,指定 lambda 表达式可以访问的外部变量。(parameter list)
是一个可选的参数列表,指定 lambda 表达式接收的参数。-> return-type
是一个可选的返回类型指定符,指定 lambda 表达式的返回值类型。类型推断
如果未指定返回值类型,编译器将尝试根据 lambda 表达式中的以下规则推断它:
return
语句,则返回值类型为 return
表达式的类型。return
语句,但它们返回不同类型的值,则返回值类型为这些类型中的任何一个。在这种情况下,编译器可能会发出警告。return
语句,则返回值类型为 void
。实战案例
案例 1:使用类型推断
以下 lambda 表达式使用类型推断,返回值类型为 int
:
auto lambda = [] (int a, int b) { return a + b; };
案例 2:指定返回值类型
以下 lambda 表达式显式指定返回值类型为 std::string
:
auto lambda = [] (std::string a, std::string b) -> std::string { return a + b; };
案例 3:推断多重返回类型
以下 lambda 表达式包含两个 return
语句,返回类型推断为 int
或 std::string
(parameter list)
は、ラムダ式で受け取るパラメータを指定するオプションのパラメータ リストです。
-> return-type
は、ラムダ式の戻り値の型を指定するオプションの戻り型指定子です。 🎜🎜型推論🎜🎜🎜戻り値の型が指定されていない場合、コンパイラはラムダ式の次の規則に基づいて推論を試みます: 🎜return
ステートメントの場合、戻り値の型は return
式の型です。 🎜ラムダ式に 1 つ以上の return
ステートメントが含まれているが、それらが異なる型の値を返す場合、戻り値の型はそれらの型のいずれかになります。この場合、コンパイラは警告を発行することがあります。 🎜ラムダ式に return
ステートメントが含まれていない場合、戻り値の型は void
になります。 int
です: 🎜auto lambda = [] (int a, std::string b) { if (a < 0) { return a; } else { return b; } };
std::string
として明示的に指定します。 🎜rrreee🎜🎜 ケース 3: 複数の戻り値の型を推論する 🎜🎜🎜次のラムダ式 この式には 2 つの return
ステートメントが含まれており、戻り値の型は int
または std::string
であると推論されます。以上がC++ ラムダ式はどのように型推論を実行しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。