Preview of C++0x

A sampling of upcoming changes to the C++ standard

Isaac Lin

version 1

If you are using the Opera web browser, use full screen mode to see the presentation in slide show format.

References

Currently planned schedule

  • Geek joke: C++0x is in hex, so the next version can come out as late as 200f and still meet the initial target
  • In October 2006, the ISO committee laid out a plan to issue an approved document by 2009. Unfortunately, the plan has slipped by a year.
  • Latest timetable from October 2007 meeting:
    • publish feature-complete draft in September 2008
    • complete fine-tuning and editorial work in 2009
  • October 2007: decided to compromise on some of the major features planned for C++0x: advanced concurrency libraries, and garbage collection

Concurrency

  • Memory model
    • define what happens when two threads access memory at the same time
    • constrict what optimizations a compiler can make (to respect memory barriers)
  • atomic types
  • standard library API enhancements
    • create and manage threads
    • locks, mutexes, condition variables
    • October 2007: decided standard will ship without more complex library functions

Language enhancements

  • Concepts: define capabilities required from template parameters
    • October 2007: decided to be a must for standard
  • rvalue semantics: support for moving objects (instead of copy-destroy)
  • constexpr functions: use result where a constant is needed
  • auto / decltype: automatic inferring of type from RHS/expression
  • nullptr
  • garbage collection
    • October 2007: deferred; some blocking issues addressed
  • Lambda functions and closures

Templates and classes

  • Template aliases
  • Variadic templates
  • Inheriting constructors

Deferred

  • Modules
  • Dynamic libraries
  • decimal floating point types (for accounting)
  • infinite precision integer library