Am spus in tutorialul anterior ca avand doua calificari ale unei structuri template, compilatorul va selecta pe cea mai apropiata dintre ele. Iata un exemplu simplu prin care se va face detectia unui tip pointer.
template<typename T>
struct PointerType
{
enum{ispointer = false};
};
template<typename T>struct PointerType<T*>
{
enum{ispointer = true};
};
Aveti in fata o prima calificare generica ce primeste orice tip inclusiv pointeri si decide in modul default ca tipul nu este pointer si o supracalificare ce va fi utilizata de compilator in cazul in care tipul coincide unui pointer. Se suprascrie intr-un fel regula anterioara. Iata si testul final:
bool res = PointerType<int>::ispointer; //FALSE
res = PointerType<int*>::ispointer; //TRUE
Niciun comentariu:
Trimiteți un comentariu