明示的なテンプレート関数のインスタンス化
テンプレート関数のインスタンス化には、特定の型の特定の実装の作成が含まれます。これは、関数の呼び出しや関数を特定の型に特化することとは異なります。
質問:
引数を 1 つ指定してテンプレート関数を定義し、それを明示的にインスタンス化したいと考えています。発動せずに
答え:
関数を明示的にインスタンス化するには、次の手順に従います:
テンプレート関数を定義します:
template <class T> int function_name(T a) {}
インスタンス化目的のタイプのテンプレート:
template void function_name<int>(int); // Explicit instantiation
ただし、指定したコードには構文エラーが含まれています。修正されたバージョンは次のようになります。
template <> void function_name<int>(int); // Explicit instantiation
特殊化とインスタンス化に関する注意:
明示的なインスタンス化はテンプレートの特殊化とは異なることに注意してください。特殊化では特定の型の関数の新しいバージョンが作成されますが、明示的なインスタンス化では特定の型の元のテンプレートのインスタンスが作成されます。
以上がテンプレート関数を呼び出さずに明示的にインスタンス化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。