template void f(Y, Z);
void g(){
f("Vasia", 3.0);
f("Vasia", 3.0); /* Z класы double
ретінде анықталады */
f("Vasia", 3.0); /* Y класы char* ретінде, aл Z
класы double ретінде анықталады */
/* f("Vasia", 3.0); қате: Х класын анықтау мүмкін
емес */
}
Шаблон-функцияны қолданушы анықтайтын мəліметтер типіне
(құрылымға немесе класқа) пайдалану үшін функцияда қолданылатын осы тип
үшін анықталған операцияларды асыра жүктеу қажет болады (операциялардың
асыра жүктелуі туралы 205 б. қараңыз).
Қарапайым функциялар сияқты, функциялардың шаблондары да шаблон-
дар көмегімен немесе қарапайым функциялар арқылы асыра жүктелуі мүмкін.
Жеке параметрлер мен типтер үшін функция шаблонының специализациясы
арқылы арнайы өңдеуді енгізуге болады. Бүтін сандар үшін жалпы сұрыптау
алгоритмін тиімдірек түрде жүзеге асыру қажет болсын делік. Мұндайда бүтін
сандармен жұмыс істейтін функция шаблонының нұсқасын өзіміз «қолдан»
бере аламыз:
1
Шаблондардың параметрлері туралы «Класс шаблондары» бөлімінде, 228 б. толығырақ айтылған.
|