C++17: All You Need to Know

C++17: All You Need to Know is a two-day training course with programming examples taught by Vittorio Romeo. It is offered online from 11AM to 5PM Eastern Time (EDT), Monday September 21st through Wednesday September 23rd, 2020 (after the conference).

Course Description

This course will cover all the most important additions in C++17, the latest C++ standard.

Both the core language and the library have been extended with new features that significantly reduce the likelihood of bugs, improve readability and maintainability of code, and enable new powerful programming paradigms.

Throughout lectures, quizzes, and real-life usage examples, the audience will understand the great value C++17 brings to the table and will be able to immediately start taking advantage of it in their projects.


Good knowledge of C++11.

Course Topics

  1. Quality of life improvements – All the “minor” C++17 language features that can be immediately applied to improve code readability and quality
  2. Preventing bugs with new attributes – Covers C++17 “attributes”, including the extremely useful `[[nodiscard]]`, which prevents real-life critical bugs
  3. Destructuring data with “structured bindings” – Covers “structured bindings”, which allow to destructure data structures with terse syntax
  4. Class template argument deduction – Covers one of the biggest C++17 features, which allows classes to be instantiated without specifying template arguments
  5. Code generation with “fold expressions” – Covers a major improvement in code generation using functional folds
  6. Performance boost via “copy elision” – Covers a change to the object model which automatically eliminates copies and moves, greatly increasing performance
  7. Simple compile-time branching: `if constexpr` – Covers another major feature, which allows to branch at compile-time using an intuitive imperative syntax
  8. Algebraic data types – Covers `std::optional` and `std::variant`, and how to use them effectively to improve type safety and make invalid states unrepresentable
  9. Other features – Covers all the remaining features which are less commonly used but still extremely useful in particular contexts

Register Here

Course Instructor

Vittorio Romeo

Vittorio Romeo (B.Sc. Computer Science) has been a Software Engineer at Bloomberg for more than 3 years, working on mission-critical company C++ infrastructure and providing Modern C++ training to hundreds of fellow employees.

He began programming around the age of 8 and quickly became a C++ enthusiast. Vittorio created several open-source C++ libraries and games, published many video courses and tutorials, and actively participates in the ISO C++ standardization process.
He is also an active member of the C++ community and has an ardent desire to share his knowledge and learn from others: he presented more than 20 times at international C++ conferences (including CppCon, C++Now, ++it, ACCU, C++ On Sea, C++ Russia, and Meeting C++), covering topics of various nature.
Vittorio maintains a website with advanced C++ articles and a YouTube channel featuring well-received modern C++11/14 tutorials. Lastly, he’s active on StackOverflow, taking great care in answering interesting C++ question (60k reputation).
When he’s not writing code, Vittorio enjoys weightlifting and fitness-related activities, competitive/challenging computer gaming and sci-fi movies/TV-series.