ホームページ > バックエンド開発 > C++ > C ラムダ式のパラメータと戻り値の型を決定するにはどうすればよいですか?

C ラムダ式のパラメータと戻り値の型を決定するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-31 07:09:09
オリジナル
695 人が閲覧しました

How Can I Determine the Parameter and Return Types of a C   Lambda Expression?

ラムダ式のパラメータと戻り値の型の決定

ラムダ式が与えられた場合、そのパラメータと戻り値の型を確認するのは困難な場合があります。この記事では、ラムダ特性を使用してこの情報を抽出する方法について説明します。

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート