Sobes.tech
Junior — Middle

Tudna példát adni a sablonok részleges specializációjának használatára C++-ban?

sobes.tech MI

Válasz az MI-től

A C++-ban a részleges sablonspecializáció lehetővé teszi, hogy egy osztály- vagy függvény sablont bizonyos paramétertípusokra definiáljunk, miközben a többi paraméter általános marad. Ez akkor hasznos, ha a sablon viselkedését bizonyos típusokra módosítani szeretnénk anélkül, hogy az összes változatot teljesen újra kellene írni.

Példa egy osztály sablon részleges specializációjára mutatókkal:

// Általános sablon
template<typename T>
struct TypeInfo {
    static const char* name() { return "Ismeretlen"; }
};

// Részleges specializáció mutatókhoz
template<typename T>
struct TypeInfo<T*> {
    static const char* name() { return "Mutató"; }
};

// Használat
#include <iostream>

int main() {
    std::cout << TypeInfo<int>::name() << std::endl;    // "Ismeretlen" kiírása
    std::cout << TypeInfo<int*>::name() << std::endl;   // "Mutató" kiírása
}