Junior — Middle
Pode dar um exemplo de utilização de especialização parcial de templates em C++?
sobes.tech IA
Resposta da IA
A especialização parcial de modelos em C++ permite definir um modelo de classe ou função para tipos específicos de parâmetros, deixando os outros parâmetros genéricos. Isso é útil quando se deseja modificar o comportamento do modelo para alguns tipos sem reescrever todas as variantes.
Exemplo de especialização parcial de um modelo de classe para ponteiros:
// Modelo geral
template<typename T>
struct TypeInfo {
static const char* name() { return "Desconhecido"; }
};
// Especialização parcial para ponteiros
template<typename T>
struct TypeInfo<T*> {
static const char* name() { return "Ponteiro"; }
};
// Uso
#include <iostream>
int main() {
std::cout << TypeInfo<int>::name() << std::endl; // Imprime "Desconhecido"
std::cout << TypeInfo<int*>::name() << std::endl; // Imprime "Ponteiro"
}