Junior — Middle
Czy możesz podać przykład użycia częściowej specjalizacji szablonów w C++?
sobes.tech AI
Odpowiedź od AI
Częściowa specjalizacja szablonów w C++ pozwala na zdefiniowanie szablonu klasy lub funkcji dla określonych typów parametrów, pozostawiając pozostałe parametry ogólne. Jest to przydatne, gdy chcesz zmienić zachowanie szablonu dla niektórych typów, nie przepisywać całkowicie wszystkich wariantów.
Przykład częściowej specjalizacji szablonu klasy dla wskaźników:
// Szablon ogólny
template<typename T>
struct TypeInfo {
static const char* name() { return "Nieznany"; }
};
// Częściowa specjalizacja dla wskaźników
template<typename T>
struct TypeInfo<T*> {
static const char* name() { return "Wskaźnik"; }
};
// Użycie
#include <iostream>
int main() {
std::cout << TypeInfo<int>::name() << std::endl; // Wypisze "Nieznany"
std::cout << TypeInfo<int*>::name() << std::endl; // Wypisze "Wskaźnik"
}