Sobes.tech
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"
}