Trainings Details
C++ is a complex programming language. When used correctly, it delivers the best possible performance. Unfortunately, it is often misused, which causes many problems.
However, it turns out that consciously using selected language features can make it relatively easy to produce high-quality software that delivers excellent runtime performance and is error-proof. This coding style is called Modern C++.
The material of this workshop is the first chapter of the trainer's most successful and popular training called "Advanced Modern C++". During the class, we will go through all the key features of the C++ language, discuss potential issues and pitfalls, and provide guidelines on how to use them correctly. This training discusses various topics ranging from identifiers that do not result in undefined behavior through vital language features like name lookup, overload resolution, one definition rule, and move semantics up to the design recommendations like Rule of Zero. Among others, we will see how we can provide a custom dynamic allocation strategy for our programs and how we should design and implement customization points for our engine.
If you are wondering if you should attend this class, maybe the following short quiz will help you decide: https://ahaslides.com/H8XZA. Those and many other questions will be addressed during the training.
## What You Will Learn?
- Emphasis on understanding the philosophy and mechanisms of C++ programming language and learning how to reuse this knowledge in one's own code.
- Particular focus on the usage of C++ templates in practical tasks.
- Development of error-unfriendly code.
- Selection of useful patterns and techniques that prove in a demanding production code.
## Workshop Structure
- 40% lecture
- 30% discussion
- 20%hands-on coding
- 10% knowledge quiz
## Experience required
The training targets developers with some professional experience with C++ programming language and who realize the problems caused by careless ways of coding in this language. The workshop aims to strengthen the knowledge of the C++ core language and show how to avoid many problems that often appear in the production code.
## Environment
- A laptop with a web browser and access to the Internet
- All hands-on exercises will be implemented using [Compiler Explorer](https://godbolt.org/)
Trainings Agenda
- Identifiers and naming conventions
- Namespaces
- C++ Types and their properties
- Value vs reference semantics
- Pointers vs references
- Unscoped vs scoped enumerations
- Classes and friends
- Special Member Functions
- Rule of Three, Five, and Zero
- Value categories
- Automatic type deduction
- Type conversions
- Objects
- Alignment
- Scope
- Lifetime
- ODR and inline
- Storage duration
- Stack vs Heap vs Free Store
- Initialization
- Name Lookup
- Overload Resolution
- Customization points
- Range-based for loop
- Copy elision
- Move semantics
- Ref-qualifiers
- `noexcept`