概要:
ラムダ式は、次のことを行うための簡潔で便利な方法を提供します。 C で無名関数を定義します。ただし、可変個引数テンプレートを使用する場合、ラムダを渡すのが難しい場合があります。この記事では、テンプレート メタプログラミングを使用して汎用ラムダを std::function に変換する手法について説明します。
テンプレートベースの std::function 変換:
の変換を有効にするにはstd::function への任意のパラメータを持つラムダの場合、テンプレートの型推定に依存することはできません。代わりに、アイデンティティ型を使用してラムダ関数をラップし、その型情報を保持します。
このアイデンティティ型を使用して、ラップされたラムダを引数として受け入れる汎用関数を作成します。
使用例:
このアプローチでは明示的に指定する必要はありませんテンプレート パラメーターを使用するには、追加の引数を関数に渡す必要があります。以下に例を示します:
結論:
このソリューションは、可変個引数テンプレートのコンテキストで汎用ラムダを std::function に変換するという課題に対処しますが、追加の引数を渡す必要があります。あるいは、明示的なテンプレート パラメーターの指定を使用したり、関数ポインターや関数オブジェクト ラッパーの使用などの代替アプローチを検討したりすることもできます。
以上がC でテンプレートを使用して汎用ラムダを std::function に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。