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
Video: Lawrence Crowl: New Features in the Next C++ Standard
(March 7, 2007)
Status reports from Herb Sutter:
February 2007 update
April 2007 ISO C++ standards meeting
July 2007 ISO C++ standards meeting
October 2007 ISO C++ standards meeting
February/March 2008 ISO C++ standards meeting
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