template <class Num>
Num sqr(Num x)
{
return x * x;
}
Tempet Temolie Vazifa yoki turdagi "bo'sh" ni ishga tushirish bilan tanishtiradi. Aslida, shablon uning barcha parametrlarining haqiqiy qiymatlari o'rnatilgunga qadar funktsiya yoki turi emas. Andoza parametrlarini almashtirish uchun ularni "burchak qavslari" ga ("kamroq" belgilariga ("kamroq" belgilariga olib boradigan va "kamroq" belgilariga olib borishi kerak. .
Ushbu lahzada kompilyator shablon parametrlarining ismlari o'rniga funktsiyaning parametrlarining ismlari o'rniga funktsiyaning parametrlari yoki o'ziga xos funktsiya yoki sinfning o'ziga xos amalga oshirilishini bildiradi, deb taxmin qilish mumkin.
auto a = sqr(10); // Num = int // a имеет тип int и значение 100 auto f = sqr(2.5f); // Num = float // f имеет тип float и значение 6.25f Funktsiya funktsiyasining parametrlari funktsiyaning o'zi parametrlaridan olinishi mumkin bo'lsa, ular ko'rsatilishi mumkin emas:
auto a = sqr(10); // 10 имееттип int, поэтому Num = int // a имеет тип int и значение 100 auto f = sqr(2.5f); // 2.5f имеет тип float, поэтому Num = float // f имеет тип float и значение 6.25f
Funktsiya funktsiyasining parametrlari funktsiyaning o'zi parametrlaridan olinishi mumkin bo'lsa, ular ko'rsatilishi mumkin emas:
template <class First, class Second = First>
struct Pair // Паразначенийтипов First и Second. {
First first;
Second second;
// Конструктор: First() и Second() -- вызовы конструкторов по умолчанию // для типов First и Second соответственно (определены и для встроенных типов). Pair(const First &first = First(), const Second &second = Second())
: first(first), second(second) /* списокинициализации: вызов конструкторов копирования для обоих полей */ {}
};
// Пара чисел с плавающей точкой. Pair p2(1, 2); // First = double, Second = First = double assert(p2.first == 1. && p2.second == 2.);
// Пара "целое, строка". Pair ids; // First = size_t, Second = string; ids.first = 23;
ids.second = "23 is the new 42";
Vazifalar va sinflar shablonlariga qo'shimcha ravishda C ++ (C ++ 11 bilan boshlanadi), u Sinonyams shablonlari shablonlarini e'lon qilish imkoniyatini beradi. Kerakli parametrlarni belgilash qobiliyati bilan bir-sharam uchun qisqa ism yozing.