4 days course
Modern C++ Development
Thought you knew C++? Think again! The C++11 standard is a huge leap forward in the language and STL. Largely inspired by Boost, the C++11 standard introduces support for lambdas, multithreading, vastly improved object construction mechanisms, and much more beside. This course takes a deep and detailed look at all the new features on offer in C++11, along with the incremental additional changes in C++14, C++17 and C++20.
Participant Profile
This course is for developers with at least 3 - 6 month C++ programming experience.
Outcome
- Working with C++11 smart pointers
- Functional programming in C++11
- Defining and using lambda expressions
- Using C++11 container classes
- Implementing code applications in C++11
- Using miscellaneous C++ language features
- What's new in C++ 14, C++17 and C++20
Course Content
General Language Enhancements in C++11
- Auto variables
- Using auto in template definitions
- Using decltype
- New return syntax
- Range-based for loops
- Making your own classes iterable
- Generalised constant expressions
- Strongly-typed enums
- Null pointers
- Explicit overrides
- Static asserts
Additional Language Features in C++11
- Lvalues, rvalues, and rrvalues
- Movability
- Reference binding rules
- Support for movability in the STL
- Improved initialization syntax
- Inheriting and delegating constructors
- Regular expressions
- Date and time
- Chrono
- Explicit conversions
- Variadic templates
Miscellaneous New Language Features in C++14
- Function return type deduction
- Alternate type deduction in declarations
- Relaxed constexpr restrictions
- Variable templates
- Aggregate member initialization
- Standard user-defined literals
Smart Pointers
- Recap of smart pointer concepts
- Shared pointers
- Weak pointers
- Unique pointers
- Techniques and patterns
Introduction to Functional Programming
- Overview of functional programming
- Using std bind to bind parameters
- Using placeholders with for_each()
- Passing by reference
- Using std function to represent free functions and member functions
Lambda Expressions
- Overview of lambda expressions
- Lambda syntax in C++11
- Defining lambdas with arguments and a return value
- Variable capture
- Using lambdas with the STL
- Performance considerations
- Generic lambdas and lambda capture expressions in C++14
C++11 and C++14 Containers
- Overview of new STL features
- Using std array and forward_list
- Using unordered containers
- Understanding hashing
- Defining a custom hash function
- Understanding buckets
- In-place construction
- Heterogeneous lookup in associative containers in C++ 14
C++11 and C++14 Multithreading
- Creating simple threads using std thread
- Using lambda expressions with threading
- Accessing the current thread
- Using mutexes
- Lock management and lock strategies
- Atomic variables
- Condition variables
- Calling functions asynchronously
- Working with future values
- Shared mutexes and locking in C++14
What's New in C++17
- Nested namespaces
- Attributes
- Fold expressions in variadic templates
- Aggregate initialization with inheritance
- Lambda enhancements
- Template class type deduction
- Inline variables
- Library enhancements
- Parallel algorithms
- Miscellaneous enhancements and additions
What's New in C++20
- Concepts
- Ranges
- Lambda improvements
- The spaceship operator
- Atomic smart pointers
- Concurrency and synchronization improvements
- Co-routines; Modules
- The consteval and constinit keywords
- Miscellaneous enhancements and additions
Instructor
Andy is a freelance instructor and consultant based in the UK, with more than 30 years experience in the industry across a wide range of technologies and platforms. Andy began his professional career in C and migrated through C++, Java, .NET and other languages and toolsets as the years passed by. Andy is currently actively involved in contemporary systems development techniques including microservice architecture, cloud-based systems, and containerisation.Do you have any course related questions, please contact
- Mette Rosenløv Vad
- Konsulent
- +45 72202432