C では、コードの再利用を実現するために、テンプレート関数をテンプレート引数としてどのように利用できますか?特に関係する関数自体もテンプレートである場合、汎用機能を維持していますか?
この問題に対処するには、テンプレート テンプレート パラメーターを使用します。主な概念は、事前にインスタンス化する必要があるため、テンプレート パラメーターにテンプレート テンプレート関数を直接含めることはできないということです。回避策には、ダミー構造体を使用してテンプレート関数をカプセル化することが含まれます。
<code class="cpp">template <typename T> struct a { static void foo(T = T()) {} }; template <typename T> struct b { static void foo(T = T()) {} }; struct SomeObj {}; struct SomeOtherObj {}; template <template <typename P> class T> void function() { T<SomeObj>::foo(); T<SomeOtherObj>::foo(); } int main() { function<a>(); function<b>(); }</code>
この例では、構造体 a と b は foo メソッドのテンプレート関数を実装します。関数テンプレートはテンプレート テンプレート パラメーターを受け取り、a および b テンプレートを引数として渡すことができます。関数内で、ダミー構造体の特定のインスタンスが作成され、さまざまなパラメータ型で foo を呼び出すことができます。
以上がC でテンプレート関数をテンプレート引数として使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。