Instanciação de modelo de função
Quando um modelo de função é chamado pela primeira vez para cada tipo, o compilador cria uma instanciação.Cada instanciação é uma versão do modelado função especializada para o tipo.Esta instanciação será chamada sempre que a função é usada para o tipo.Se você tiver várias instanciações idênticas, mesmo em diferentes módulos, somente uma cópia de uma instância terminarão no arquivo executável.
Conversão de argumentos de função é permitido em modelos de função para qualquer par de argumento e o parâmetro onde o parâmetro não depende um argumento de modelo.
Os modelos de função podem ser instanciados explicitamente ao declarar o modelo com um determinado tipo, como um argumento.Por exemplo, o código a seguir é permitido:
// function_template_instantiation.cpp
template<class T> void f(T) { }
// Instantiate f with the explicitly specified template.
// argument 'int'
//
template void f<int> (int);
// Instantiate f with the deduced template argument 'char'.
template void f(char);
int main()
{
}