An Overview of the New C++ (C++11) -- Scott Meyers
An Overview of the New C++ (C++11)
Scott Meyers
Specification of the new version of C++ (“C++11”) is finally complete, and many compilers already 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.
Course Highlights
Participants will gain:
- Knowledge of the most important C++11 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.
Who Should Attend
Designers and developers who are using, considering using, or wish to know about the expanded capabilities of C++11. Attendees should be experienced with C++ and comfortable with its primary features (e.g., classes, templates, inheritance, STL, etc.). Familiarity with threading concepts (e.g., threads and mutexes) is helpful, but is not essential.
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.
Length
Three full days (six to seven lecture hours per day).
Detailed Topic Outline
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
-
Enhanced
enum
s - Unicode characters and strings
- Raw string literals
- Uniform initialization syntax
- Initializer lists
- Lambda Expressions
- Template Aliases
- Threading Support
- 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 Forwarding
-
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.)
Yet More Features (Overview)
Removed and Deprecated Features (Overview)
Sources for Further Information