What's new in C++
Published by O'Reilly Media, Inc.
Comprehensive overview of C++17’s killer features
C++17—the latest C++ standard—extends both the core language and the library with new features that significantly reduce the likelihood of bugs, improve readability and maintainability of code, and enable new powerful programming paradigms.
Join expert Vittorio Romeo to explore all the most important additions in C++17 and discover the value it brings to the table. Through presentations, exercises, and real-life examples, you’ll learn how to take advantage of these new features in your projects immediately.
What you’ll learn and how you can apply it
By the end of this live online course, you’ll understand:
- C++17 features and the reasons why they were added to the language
- How to immediately make your code safer and less prone to bugs by
- How to reduce the boilerplate or verbose patterns that are present in most codebases
- New code generation features such as fold expressions
- How C++17 completely eliminates copies and moves of your objects in many cases
- How to make your code more Pythonic and functional, thanks to structured bindings
- How to completely eliminate arcane SFINAE techniques thanks to
constexpr if
- Fixes to surprising behaviors in the language, such as
auto
curly brace deduction
And you’ll be able to:
- Immediately and gradually apply C++17 features in an existing codebase to improve safety and maintainability
- Design new components with powerful new patterns that help model real-world scenarios while minimizing complexity
- Improve compilation times and readability by replacing template metaprogramming with simpler and more powerful constructs
This live event is for you because...
- You’re a C++11/14 developer who wants to migrate to C++17.
- You want to improve the safety and readability of an existing C++ codebase thanks to C++17 features.
- You want to enhance your team’s development experience thanks to C++17’s quality-of-life improvements.
Prerequisites
- Familiarity with C++11 (move semantics, smart pointers, and lambda expressions)
- Basic knowledge of C++14
- A computer with a local installation of a C++17 compiler (Useful but not required—the course will use a free online compiler.)
Recommended preparation:
- Brush up on C++11 and C++14 by exploring relevant sections of C++ Today (report), A Tour of C++ (book), and The C++ Programming Language, fourth edition (book)
Schedule
The time frames are only estimates and may vary according to how the class is progressing.
Quality-of-life improvements (45 minutes)
- Presentation: How new features improve productivity and reduce annoyances
- Group discussion: How could these features improve your current projects?
- Hands-on exercise: Reduce boilerplate and improve readability in an existing code snippet
- Q&A
Break (5 minutes)
Bug prevention with C++17 attributes (35 minutes)
- Presentation: Common bugs; how new attributes can prevent them
- Group discussion: Have you ever encountered any of these bugs?
- Hands-on exercise: Spot the bugs in an existing code snippet and apply attributes
- Q&A
Break (5 minutes)
Algebraic data types (45 minutes)
- Presentation: Concept of algebraic data types and their implementation in C++17
- Group discussion: Polymorphism versus algebraic data types
- Hands-on exercise: Implement a message protocol using variants
- Q&A
Break (5 minutes)
Structured bindings (35 minutes)
- Presentation: How structured bindings make C++ code more Pythonic
- Group discussion: How C++ is becoming more and more terse
- Hands-on exercise: Create structured bindings for a custom class
- Q&A
Break (5 minutes)
C++17 metaprogramming (50 minutes)
- Presentation: Metaprogramming—why and how with C++17 features
- Group discussion: Use cases for metaprogramming in your projects
- Hands-on exercise: Implement compile-time loops with fold expressions
Wrap-up and Q&A (10 minutes)
Your Instructor
Vittorio Romeo
Vittorio Romeo (B.Sc., Computer Science, 2016) is a Senior Software Engineer at Bloomberg, working on mission-critical C++ middleware and delivering Modern C++ training to hundreds of fellow employees. He began programming at the age of 8 and quickly fell in love with C++. Vittorio has created several open-source C++ libraries and games, has published many video courses and tutorials, and actively participates in the ISO C++ standardization process. He is an active member of the C++ community with 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 from game development to template metaprogramming. Vittorio maintains a website with advanced C++ articles and a YouTube channel featuring well received modern C++11/14 tutorials. He is active on StackOverflow, taking great care in answering interesting C++ questions (75k+ reputation). When he is not writing code, Vittorio enjoys weightlifting and fitness-related activities as well as computer gaming and sci-fi movies.