Sobes.tech
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;   // Печата "Указател"
}