Programowanie w C++20
Cele szkolenia
Uczestnicy szkolenia poznają:
- starship operator - implementację porównań w C++20
- nowości w szablonach, takie jak koncepty, ograniczenia szablonów i użycie auto w deklaracjach funkcji szablonowych
- bibliotekę Ranges - nowy standard przetwarzania kolekcji w C++20
- nowości w wyrażeniach lambda
- implementację korutyn (coroutines)
- modularyzację kodu - moduły
- nowe API dla kodu wielowątkowego
Plan szkolenia
Porównania i <=> operator
- Przepisywanie porównań przez kompilator
- Implementacja operatorów == i <=> dla klas i struktur
- Kategorie porównań i operator<=>
- Użycie operatora <=> w kodzie generycznym
auto jako parametr funkcji
- Szablony funkcji z parametrami auto
- Funkcje z auto vs. generyczne lambdy
Ograniczenia szablonów, wymagania i koncepty
- Ograniczenia dla szablonów
- Wyrażenia boolowskie definiowane "ad hoc"
- Wyrażenia requires
- Koncepty
- Definiowanie konceptów
- Użycie konceptów
- Subsumacja konceptów
- Ograniczenia semantyczne w konceptach
- Koncepty w bibliotece standardowej
- Podstawowe koncepty standardowe
- Koncepty dla iteratorów i zakresów
- Koncepty dla obiektów "callable"
- Koncepty pomocnicze
Biblioteka Ranges w C++20
- Algorytmy akceptujące zakresy
- Wartownicy (Sentinels)
- Projekcje (Projections)
- Widoki (Views)
- Generujące
- Filtrujące
- Transformujące
- Zmieniające dane
- Narzędzia dla zakresów i widoków
- Borrowed iterators & ranges
Nowe elementy w składni języka
- Range-based loop z sekcją inicjującą
- Wyliczenia i deklaracja using
- Agregaty - inicjalizacja
- Nowe atrybuty
- Makra testujące elementy standardu
Nowości w bibliotece standardowej
std::span
- Formatowane wyjście -
std::format
- Daty i strefy czasowe
- Nowe klasy cech
- Bezpieczne porównywanie typów całkowitych
- Stałe matematyczne
- Operacje bitowe w C++20
Nowości w wyrażeniach lambda
- Lambdy generyczne z parametrami szablonu
- Domyślne konstruktory w lambdach
- Lambdy jako NTTP
- Lambdy consteval
Obliczenia na etapie kompilacji
constinit
consteval
constexpr
w C++20- Funkcje
constexpr
używające dynamicznej alokacji pamięci (zstd::vector
lubstd::string
)
Korutyny
- Definiowanie i wywołanie korutyn
- Coroutine frame, coroutine handle & promise type
- Alokacja pamięci w korutynach
- Generatory
- Obiekty Awaitable & awaiter
- Wykorzystanie korutyn w programowaniu współbieżnym
Moduły
- Implementacja i eksport modułów
- Model kompilacji modułów
- Import i użycie modułów
- Moduły składające się z wielu plików
- Module units
- Internal partitions
- Interface partitions
Programowanie współbieżne w C++20
std::jthread
i tokeny stopu- Semafory
- Nowości w typach atomowych
- Synchronizowane strumienie wyjścia
Wymagania
Dobra znajomość C++11/14/17.
Czas trwania
3 dni po 8 godzin lekcyjnychWycena szkolenia zamkniętego
Szkolenie zamknięte w siedzibie Klienta.
Klient zapewnia salę szkoleniową i sprzęt.
Zapytaj o termin i cenę