型に対して関数テンプレートの明示的なインスタンス化を使用するのはなぜですか? 関数の明示的なインスタンス化を使用しない場合、必要な関数を作成するためにテンプレートが使用されますが、明示的なインスタンス化の使用は何ですか?
template <class Any>
void Swap (Any &, Any &);
// template prototype
template <> void Swap<job>(job &, job &);
// explicit specialization for job
int main(void)
{
template void Swap<char>(char &, char &);
// explicit instantiation for char
short a, b;
Swap(a,b);
// implicit template instantiation for short
job n, m;
Swap(n, m);
// use explicit specialization for job
char g, h;
Swap(g, h);
// use explicit template instantiation for char
}
上記の例では。明示的なインスタンス化は char 型に対して行われます。これの用途は何ですか?? コンパイラがテンプレートを使用して char 型の fn を作成できる場合。
私のコンセプトを明確にするのに役立つ参考文献がある場合は、それらを含めてください。