Wprowadzenie do modułu
Autor modułu: Paweł Wnuk (pawel.wnuk@pw.edu.pl)
Programowanie generyczne (uogólnione) w języku C++ to podejście, które pozwala tworzyć bardziej elastyczny i wielokrotnego użytku kod. Zamiast pisać wiele wersji tej samej funkcji czy klasy dla różnych typów danych, możemy wykorzystać szablony — konstrukcje pozwalające na parametryzację typami. Dzięki nim kompilator sam wygeneruje odpowiedni kod dla konkretnych typów użytych w programie. Szablony są podstawą wielu nowoczesnych bibliotek C++, w tym Standardowej Biblioteki Szablonów (STL), i umożliwiają efektywne pisanie ogólnych algorytmów i struktur danych.
Moduł wprowadza najpierw szablony funkcji, pokazując ich przewagę nad tradycyjnym przeładowywaniem funkcji czy makrami. Następnie omawia szablony klas, w tym parametry pozatypowe, czyli takie, które reprezentują wartości (np. rozmiar tablicy) zamiast typów. Dzięki temu możliwe jest tworzenie bardzo uniwersalnych kontenerów i algorytmów. Moduł porusza również zaawansowane zagadnienia, takie jak szablony parametrów szablonu, konkretyzacja na żądanie oraz typy stowarzyszone.
Zwieńczeniem materiału jest wprowadzenie do konceptów – nowego mechanizmu z języka C++20, który pozwala jasno określić wymagania, jakie musi spełnić typ używany w szablonie. Dzięki konceptom możliwe jest pisanie bardziej czytelnych i bezpiecznych szablonów, które lepiej sygnalizują błędy i są łatwiejsze w utrzymaniu. Koncepty umożliwiają też kontrolę nad semantyką operacji wykonywanych na typach.
Wymagana wiedza bazowa: Aby w pełni skorzystać z tego modułu, niezbędna jest znajomość podstaw programowania w C++, w tym funkcji, klas i mechanizmu przeładowywania funkcji. Przydatna będzie również podstawowa wiedza o wskaźnikach i referencjach.
Słowa kluczowe: szablon, typ generyczny, funkcja szablonowa, klasa szablonowa, parametr pozatypowy, konkretyzacja szablonu, STL, koncept, C++20, programowanie uogólnione, polimorfizm statyczny.