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 enums
  • 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

Add a Comment

Comments are closed.

Comments (0)

There are currently no comments on this entry.