Кіріспе
C++ бағдарламалау тілінің мүмкіндігі Шаблондар – C++ бағдарламалау тілінің функциялары мен сыныптарының кез келген дерек типімен жұмыс істеуіне мүмкіндік беретін мүмкіндік. Бұл функция немесе сынып жариялағанда, толық жариялама жасамай, әр түрлі сыныптарға (алдын ала құрастырылған немесе жаңадан жарияланған дерек типі) жалпы айнымалы арқылы сілтеме жасауға болады. Түсініктірек айтқанда, шаблонды сынып немесе функция, (компиляцияға дейін) шаблонды код блогын қолданылатын жерге көшіріп, жабыстырып, содан кейін шаблон параметрін нақты дерек типімен алмастырумен бірдей. Осы себепті, шаблонды әдістерді қолданатын сыныптарды жүзеге асыруды тақырып файлдарына (*.h файлдары) орналастырады, себебі дерек типі алдын ала белгілі болмаса, символдар компиляцияланбайды. C++ стандартты кітапханасы байланысты шаблондар шеңберінде көптеген пайдалы функцияларды ұсынады. C++ шаблондарына CLU тіліндегі параметрленген модульдер мен Ada тіліндегі жалпыламалар үлкен әсер еткен.
Templates are a feature of the C++ programming language that allows functions and classes to operate with generic types. This allows a function or class declaration to reference via a generic variable another different class (built in or newly declared data type) without creating full declaration for each of these different classes. In plain terms, a templated class or function would be the equivalent of (before "compiling") copying and pasting the templated block of code where it is used, and then replacing the template parameter with the actual one. For this reason, classes employing templated methods place the implementation in the headers (*. h files) as no symbol could be compiled without knowing the type beforehand. The C++ Standard Library provides many useful functions within a framework of connected templates. Major inspirations for C++ templates were the parameterized modules provided by the language CLU and the generics provided by Ada.
Техникалық шолу
Шаблондардың үш түрі бар: функциялық шаблон, сыныптық шаблон және, C++14-тен бері, айнымалы шаблон. C++11-ден бері шаблондар вариативті немесе вариативті емес болуы мүмкін; ал C++-тың бұрынғы нұсқаларында олар әрқашан вариативті емес болған.
Сынып үлгілері
Сынып шаблоны параметрлерге негізделген сыныптарды жасау үшін нұсқау береді. Сынып шаблондары көбінесе контейнерлерді іске асыру үшін қолданылады. Сынып шаблоны оған үлгі аргументтері ретінде нақты типтер жиынтығын жіберу арқылы жасалады. C++ стандартты кітапханасында көптеген сынып шаблондары бар, әсіресе Стандартты Шаблондық Кітапханадан бейімделген контейнерлер, мысалы, вектор.
Үлгілерді мамандандыру
Үлгіден функция немесе класс жасалғанда, компилятор қолданылған аргументтер жиынтығы үшін сол үлгінің ерекшеленген нұсқасын жасайды, және осы ерекшеленген нұсқа жасалған ерекшеленген нұсқа деп аталады.
Түрлі үлгілер
C++11 std::printf сияқты өзгермелі аргументтерді қабылдайтын функцияларға ұқсас, аргументтердің өзгеретін санын қабылдай алатын вариативтік шаблонды енгізді.