Jump to content
Nytro

C++0x - the next ISO C++ standard

Recommended Posts

C++0x - the next ISO C++ standard

This document is written by and maintained by Bjarne Stroustrup. Constructive comments, correction, references, and suggestions are of course most welcome. Currently, I'm working to improve completeness and clean up the references.

C++0x is the next ISO C++ standard. Currently a draft is available for comments. The previous (and current) standard is often referred to as C++98 or C++03; the differences between C++98 and C++03 are so few and so technical that they ought not concern users.

The final committee draft standard is currently (March 2010) being voted on by the national standards bodies. After that there will be more work before all comments have been addressed and the ISO bureaucracy satisfied. At the current stage of the proceedings, no features (even very minor ones) are expected to be added or removed. The name "C++0x" is a relict of the days where I and others, hoped for a C++08 or C++09. However, to minimize confusion, I'll keep referring to the upcoming C++ standard with the feature set defined here as C++0x. Think of 'x' as hexadecimal (most likely 'B', i.e. C++11).

If you have comments on C++0x, please find some member of your national standards body -- or a member of any standards body -- to send your comments to. That's now the only way and will ensure that the committee doesn't have to deal with many very similar comment. Remember, the committee consists of volunteers with limited time and resources.

All official documents relating to C++0x can be found at the ISO C++ committee's website. The official name of the committee is SC22 WG21.

Caveat: This FAQ will be under construction for quite a while. Comments, questions, references, corrections, and suggestions welcome.

Purpose

The purpose of this C++0x FAQ is

To give an overview of the new facilities (language features and standard libraries) offered by C++0x in addition to what is provided by the previous version of the ISO C++ standard.

To give an idea of the aims of the ISO C++ standards effort.

To present a user's view of the new facilities

To provide references to allow for a more in depth study of features.

To name many of the individuals who contributed (mostly as authors of the reports they wrote for the committee). The standard is not written by a faceless organization.

Please note that the purpose of this FAQ is not to provide comprehensive discussion of individual features or a detailed explanation of how to use them. The aim is to give simple examples to demonstrate what C++0x has to offer (plus references). My ideal is "max one page per feature" independently of how complex a feature is. Details can often be found in the references.

Lists of questions

Here are some high-level questions

What do you think of C++0x?
When will C++0x be a formal standard?
When will compilers implement C++0x?
When will the new standard libraries be available?
What new language features will C++0x provide? (a list); see also the questions below
What new standard libraries will C++0x provide? (a list); see also the questions below
What were the aims of the C++0x effort?
What specific design aims guided the committee?
Where can I find the committee papers?
Where can I find academic and technical papers about C++0x? (a list)
Where else can I read about C++0x? (a list)
Are there any videos about C++0x? (a list)
Is C++0x hard to learn?
How does the committee operate?
Who is on the committee?
In which order should an implementer provide C++0x features?
Will there be a C++1x?
What happened to "concepts?
Are there any features you don't like?

Questions about individual language features can be found here:

__cplusplus
alignments
attributes
atomic operations
auto (type deduction from initializer)
C99 features
enum class (scoped and strongly typed enums)
copying and rethrowing exceptions
constant expressions (generalized and guaranteed;constexpr)
decltype
defaulted and deleted functions (control of defaults)
delegating constructors
Dynamic Initialization and Destruction with Concurrency
explicit conversion operators
extended integer types
extern templates
for statement; see range for statement
suffix return type syntax (extended function declaration syntax)
in-class member initializers
inherited constructors
initializer lists (uniform and general initialization)
lambdas
local classes as template arguments
long long integers (at least 64 bits)
memory model
move semantics; see rvalue references
Inline namespace
Preventing narrowing
null pointer (nullptr)
PODs (generalized)
range for statement
raw string literals
right-angle brackets
rvalue references
Simple SFINAE rule
static (compile-time) assertions (static_assert)
template alias
template typedef; see template alias
thread-local storage (thread_local)
unicode characters
Uniform initialization syntax and semantics
unions (generalized)
user-defined literals
variadic templates

I often borrow examples from the proposals. In those cases: Thanks to the proposal authors. Many of the examples are borrowed from my own talks and papers.

Questions about individual standard library facilities can be found here:

abandoning a process
Improvements to algorithms
array
async()
atomic operations
Condition variables
Improvements to containers
function and bind
forward_list a singly-liked list
future and promise
garbage collection ABI
hash_tables; see unordered_map
metaprogramming and type traits
Mutual exclusion
random number generators
regex a regular expression library
scoped allocators
shared_ptr
smart pointers; see shared_ptr, weak_ptr, and unique_ptr
threads
Time utilities
tuple
unique_ptr
unordered_map
weak_ptr
system error

Below are questions to specific questions as indexed above.

Tutorial:

http://www2.research.att.com/~bs/C++0xFAQ.html

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...