Every folder below src/ is a group in the lab's menu. The README in each folder explains the
topic, and the examples next to it show it in code. Run any example with
./build/bin/cpp_lab_project --run <id>, or browse them with the interactive menu.
- Learning path: a suggested order through the examples
- Adding examples: how the lab works and how to add your own examples
- API documentation: generating the Doxygen site and publishing it to Pages or the wiki
- Standard coverage: what the lab shows of C++11 - C++23, and what is still a draft
- Basics: control flow, initialization, operators, const/constexpr
- Data types: fundamental types, pointers, references, enums, structs, unions, conversions
- Classes: constructors, destructors, Rule of 3/5/0, relationships, friends, virtual
- Functions: function pointers, lambdas, std::function, operator overloading
- Templates: function and class templates, specialization, concepts, CRTP
- Linkage: internal/external linkage, sharing global constants
- Smart pointers: unique_ptr, shared_ptr, weak_ptr
- Strings: C strings, std::string, string_view, formatting
- Containers: sequence, associative, unordered, adapters
- Exceptions: try/catch/throw, noexcept
- File handling: streams, files, filesystem, formatting
- Date and time:
<ctime>and<chrono> - Concurrency: threads, mutexes, condition variables, futures
- Utilities: optional, algorithms, regex, type traits, variadics
- Behavioral
- Structural
- Creational
- C++ idioms: pImpl, type erasure
- MVC/MVVM (GTK4 applications)