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 (z std::vector lub std::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 lekcyjnych
Wycena szkolenia zamkniętego

Szkolenie zamknięte w siedzibie Klienta.

Klient zapewnia salę szkoleniową i sprzęt.

Zapytaj o termin i cenę
Wycena szkolenia zdalnego

Szkolenie live online. Warsztaty z trenerem.

Zapytaj o termin i cenę
Terminy szkoleń otwartych

Brak terminu?

Zgłoś zainteresowanie szkoleniem