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
}