Advanced C++

The course is not on the list Without time-table
Code Completion Credits Range Language
18PCP Z,ZK 4 2P+2C Czech
Garant předmětu:
Department of Software Engineering

This lecture covers the virtual inheritance,variadic templetes, template metaprogramming, template libraries design and implementation, tools for data type processing in compile time and for the advanced diagnostic of the templates, concepts, coroutines, modules, ranges, views and other tools introduced in C++ 20, application of the multithreading (execution parallelization).


Programming in C++ 1, 2.

Syllabus of lectures:

1 Moving instances

2. Virtual inheritance

a. Syntactic rules, importance

b. Instance structure

c. Example

3. Template metaprogramming

a. Computational completeness of the templates

b. Type to type mapping, value to type mapping

c. Branching, loop substitution

d. Application, examples

4. Variadic templates (variable argument number templates) I.

a. Syntactic rules, parameter pack

b. parameter pack expansion

c. Examples

5. Variadic templates II.

a. Template metaprogramming with variadic templates

b. Diagnostics tools

c. Examples

6. Concepts

a. Concept derclaration

b. Using concept in metaprogramming

c. Examples

7. Modules

a. Module declaration

8. Ranges, views

a. Basic tools

b. Examples

9. Coroutines

a. Basic tools

b. Coroutine implementation

c. Examples

10. Other advanced tools in C++20 and C++23

a. Structure binding declaration

b. Constexpr functions, consteval functions

c. Generic lambda expressions

11. Multithreading I

a. Thread and its states, std::thread class

b. Basic operations with threads

c. Data access sybchronization

d. Examples

12. Multithreading II

a. Memory model

b. Atomic types

c. Asynchronous processing

d. Examples

13. Repetition, examples

Syllabus of tutorials:

The same as for the lecture

Study Objective:

The lecture provides a complex view on advanced tools in the C++ programming language and on the best practices for their application in programming. The lecture covers tools that are part of the C++ standard, but are not covered by the basic course. These tools are necessary for the development of advanced C++ libraries aimed not only to the effectivity, but also to the design and architecture quality.

Study materials:

1.Stroustrup, Bjarne: The C++ Programming Language, 4th Edition. Addison-Wesley 2013. ISBN 978-0321563842


Media and tools

?Computer with operating system, monitor, keyboard and mouse

?Integrated development environment (IDE) with C++ compiler supporting the ISO 14882:2011 standard actualized according to C++20 (or newer one)

Further information:
No time-table has been prepared for this course
The course is a part of the following study plans:
Data valid to 2024-05-30
Aktualizace výše uvedených informací naleznete na adrese https://bilakniha.cvut.cz/en/predmet5251206.html