Junior — Middle
Можете ли да дадете пример за използване на частична специализация на шаблони в C++?
sobes.tech AI
Отговор от AI
Частичната специализация на шаблони в C++ позволява да се дефинира шаблон на клас или функция за определени типове параметри, като останалите параметри остават общи. Това е полезно, когато трябва да промените поведението на шаблона за някои типове, без да преписвате напълно всички варианти.
Пример за частична специализация на шаблон на клас за указатели:
// Общ шаблон
template<typename T>
struct TypeInfo {
static const char* name() { return "Непознат"; }
};
// Частична специализация за указатели
template<typename T>
struct TypeInfo<T*> {
static const char* name() { return "Указател"; }
};
// Използване
#include <iostream>
int main() {
std::cout << TypeInfo<int>::name() << std::endl; // Печата "Непознат"
std::cout << TypeInfo<int*>::name() << std::endl; // Печата "Указател"
}