Szablon funkcji (function template) to model funkcji, który można wykorzystać
jako wzorzec (pattern) do tworzenia innych funkcji o tej samej funkcjonalności
dla różnych typów danych. Idea konstrukcji szablonów polega na tym, aby na etapie tworzenia szablonów nie określać typu parametrów formalnych ani typu zwracanego. Szablony operują na danych typu uogólnionego (generic). Szablony najczęściej stosujemy, gdy ten sam kod źródłowy ma być powielony dla kilku różnych typów. Przykładowy szablon funkcji: template<typename T> T nazwa_funkcji(T a, T b) { // ciało funkcji } Definicję szablonu funkcji rozpoczyna słowo kluczowe template, po nim występuje ostry nawias < >. Wewnątrz nawiasu umieszczamy parametry formalne tego szablonu. Lista ta nie może być pusta. Wpisujemy słowo typename (lub class) a za nim symboliczną nazwę parametru T. Gdy parametrów jest więcej, wówczas umieszczamy je po przecinku, czyli znowu typename i nazwa parametru. W następnej linijce zaczyna się treść szablonu - definicja funkcji. Parametr szablonu powinien, choć nie musi wystąpić w linijce deklaracji funkcji jako jeden z argumentów lub wartość zwracana. Z szablonu można również korzystać w ciele funkcji np. do tworzenia zmiennych pomocniczych. Jeżeli chcemy wywołać taką funkcję szablonową, nie musimy wcześniej deklarować kompilatorowi chęci skorzystania z niej. Funkcje szablonowe nie są kompilowane w sposób bezpośredni. Kompilator trafiając na wywołanie funkcji szablonowej po prostu sobie odpowiednią funkcję wyprodukuje na podstawie szablonu. Jeżeli drugi raz wywołujemy funkcję z takimi samymi typami parametrów, wówczas kompilator drugi raz nie produkuje funkcji tylko ją wywołuje. Wywołanie funkcji szablonowej: nazwa_funkcji<typ_zmiennej>(par1, par2);