ラムダ式のパラメータと戻り値の型の決定
ラムダ式が与えられた場合、そのパラメータと戻り値の型を確認するのは困難な場合があります。この記事では、ラムダ特性を使用してこの情報を抽出する方法について説明します。
C 11 では、ラムダ式が導入され、さまざまなシナリオで使用できます。考えられる使用例の 1 つは、ラムダを引数として関数テンプレートに渡すことですが、これを成功させるには、ラムダのパラメータと戻り値の型を知っていることが重要です。
最初は、std::function を使用してラムダ式を表現しようとします。エラー。ただし、lambda_traits の導入により、より堅牢なソリューションが提供されます。ラムダの Operator() の decltype を使用して、lambda_traits はパラメータの型を決定できます。
次のコード スニペットは、ラムダ トレイトを利用してラムダ式から型情報を抽出する方法を示しています。
template <typename TLambda> void f(TLambda lambda) { typedef typename lambda_traits<TLambda>::param_type P; typedef typename lambda_traits<TLambda>::return_type R; std::function<R(P)> fun = lambda; // Construct the std::function object }
このシナリオ例では、f 関数テンプレートは引数としてラムダを受け入れ、ラムダの特性を利用してその特性を推定します。
[](auto x) {} など、明示的な型を指定しない汎用ラムダの場合、このアプローチは機能しません。それにもかかわらず、ラムダ トレイトは、パラメータと戻り値の型が定義されたラムダに対して効果的であることが証明されています。
以上がC ラムダ式のパラメータと戻り値の型を決定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。