Specification of the latest version of C++ ("C++11") was completed in 2011, and many compilers now offer a wealth of features from the revised language. And such features! auto
-declared variables reduce typing drudgery and syntactic noise; Unicode, threading support, and alignment control address important functionality gaps; and rvalue references and variadic templates facilitate the creation of more efficient, more flexible libraries. The standard library gains resource-managing smart pointers, new containers, additional algorithms, support for regular expressions, and more. Altogether, C++11 offers much more than "old" C++. This intensively technical seminar introduces the most important new features in C++11 and explains how to get the most out of them.
That's not all. A feature-complete draft of C++11's successor, "C++14", has now been adopted, and this course also covers select C++14 features. These include deduced function return types; reader/writer locks; and extensions to lambda expressions (auto
and variadic parameters, generalized captures). You won't find a more up-to-date examination of the new C++ anywhere!
- Knowledge of the most important C++11 and C++14 features and how they help produce better programs.
- Insights into how new features solve important problems.
- Understanding of which features are useful primarily to library writers, which to class authors, and which to virtually all C++ developers.
- Availability information regarding which features are available on which platforms.
Format: Lecture and question/answer. There are no hands-on exercises, but participants are welcome - encouraged! - to bring computers to experiment with the material as it is presented.
Course outline and topics
- The History and Vocabulary of C++ Evolution
- Sample Program: C++98 vs. C++11
- Features for Everybody:
- auto for Type Declarations
- Range-Based for Loops
- ">>" as Nested Template Closer
- nullptr
- Unicode characters and strings
- Raw string literals
- Uniform initialization syntax
- Initializer lists
- Lambda Expressions
- Template Aliases
- Threading Support
- Library Enhancements:
- New Container Features
- Smart Pointers (shared_ptr, weak_ptr, unique_ptr)
- Hash Tables
- Singly-Linked Lists
- Fixed-Size Arrays
- Tuples
- Regular Expressions
- Generalized Functors(function)
- Generalized Binder (bind)
- New Algorithms
- Other New Library Functionality
- Features Primarily for Class Authors:
- Move Support, Rvalue References, and Perfect Fowarding
- default Member Functions
- delete Functions
- Default Member Initialization
- Delegating Constructors
- Inheriting Constructors
- Features Primarily for Library Authors:
- Static Assertions
- explicit Conversion Functions
- Variadic Templates
- decltype
- Alignment control (i.e. alignof, alignas, etc.)
- More C++11 Features (Overview)
- More C++14 Features (Overview)
- Removed and Deprecated Features (Overview)
- Sources for Further Information