C++11

C++0xmove constructorconstexprmove constructorsmove semanticsnullptr constant2011 revision of the C++ StandardattributeC++ (ISO 2011)
C++11 is a version of the standard for the programming language C++.wikipedia
221 Related Articles

C++17

It was approved by International Organization for Standardization (ISO) on 12 August 2011, replacing C++03, superseded by C++14 on 18 August 2014 and later, by C++17.
In that time period, the C++17 revision was also called C++1z, following C++0x or C++1x for C++11 and C++1y for C++14.

C++14

2014 standardC++C++2014
It was approved by International Organization for Standardization (ISO) on 12 August 2011, replacing C++03, superseded by C++14 on 18 August 2014 and later, by C++17.
It is intended to be a small extension over C++11, featuring mainly bug fixes and small improvements.

C++

C++ programming languageC++98C with Classes
C++11 is a version of the standard for the programming language C++.
The C++ programming language was initially standardized in 1998 as ISO/IEC 14882:1998, which was then amended by the C++03, C++11 and C++14 standards.

C++ Standard Library

libstdc++standard libraryits standard library
Significant changes were also made to the C++ Standard Library, incorporating most of the C++ Technical Report 1 (TR1) libraries, except the library of mathematical special functions.
Previously, sorting was only required to take O(n log n) on average, allowing the use of quicksort, which is fast in practice but has poor worst-case performance, but introsort was introduced to allow both fast average performance and optimal worst-case complexity, and as of C++11, sorting is guaranteed to be at worst linearithmic.

Anonymous function

lambda expressionanonymous functionslambda expressions
C++11 provides the ability to create anonymous functions, called lambda functions.
For example, the ML languages are statically typed and fundamentally include anonymous functions, and Delphi, a dialect of Object Pascal, has been extended to support anonymous functions, as has C++ (by the C++11 standard).

C++03

ISO/IEC C++03
It was approved by International Organization for Standardization (ISO) on 12 August 2011, replacing C++03, superseded by C++14 on 18 August 2014 and later, by C++17.
C++03 replaced the prior revision of the C++ standard, called C++98, and was later replaced by C++11.

C (programming language)

CC programming languageC language
Standard C function declaration syntax was perfectly adequate for the feature set of the C language.
The C compiler in Microsoft Visual C++, however, implements the C89 standard and those parts of C99 that are required for compatibility with C++11.

Generic programming

genericgenericstemplates
Areas of the core language that were significantly improved include multithreading support, generic programming support, uniform initialization, and performance. Many algorithms can operate on different types of data; C++'s templates support generic programming and make code more compact and useful.

Copy elision

return value optimizationelision
(For simplicity, this discussion neglects the return value optimization.)
In the current revision of the C++ standard (C++11), the issues have been addressed, essentially allowing both the copy from the named object to the exception object, and the copy into the object declared in the exception handler to be elided.

Value (computer science)

valuevalueslvalue
In C++03 (and before), temporaries (termed "rvalues", as they often lie on the right side of an assignment) were intended to never be modifiable — just as in C — and were considered to be indistinguishable from types; nevertheless, in some cases, temporaries could have been modified, a behavior that was even considered to be a useful loophole.
In C++11 a special semantic-glyph && exists, to denote the use/access of the expression's address for the compiler only; i.e., the address cannot be retrieved using the address-of & operator during the run-time of the program (see the use of move semantics).

C++ Technical Report 1

TR1C++ Standards Committee's Library Technical ReportC++ Technical Report 2
Significant changes were also made to the C++ Standard Library, incorporating most of the C++ Technical Report 1 (TR1) libraries, except the library of mathematical special functions.
However, most of its proposals became part of the later official standard, C++11.

Most vexing parse

The traditional constructor syntax, for example, can look like a function declaration, and steps must be taken to ensure that the compiler's most vexing parse rule will not mistake it for such.
* (In C++11 and later.) To use uniform initialization with braces:

String literal

stringraw stringliteral string
C++03 offers two kinds of string literals.
Although this notation is more flexible, few languages support it; other than Perl, Ruby (influenced by Perl) and C++11 also support these.

Thread-local storage

thread-localthread local storageThread-specific storage
A new thread-local storage duration (in addition to the existing static, dynamic and automatic) is indicated by the storage specifier.

Compile time function execution

Compile-Time Function ExecutionCompile time expressionscompile-time execution
Constant expressions are optimization opportunities for compilers, and compilers frequently execute them at compile time and hardcode the results in the program.
In C++11, this technique is known as generalized constant expressions.

Futures and promises

futuresPromisesfuture
The C++11 thread library also includes futures and promises for passing asynchronous results between threads, and for wrapping up a function call that can generate such an asynchronous result.
As an example of the first possibility, in C++11, a thread that needs the value of a future can block until it is available by calling the or member functions.

Special member functions

special member function
If a member has a non trivial special member function, the compiler will not generate the equivalent member function for the and it must be manually defined.

Variadic template

Variadic templatesparameter packvariable number of arguments
An alternative mechanism for processing integer and floating point raw literals is via a variadic template:
Variadic templates are supported by C++ (since the C++11 standard), and the D programming language.

Function object

functorfunction objectsfunctors
A thread class is provided, which takes a function object (and an optional series of arguments to pass to it) to run in the new thread.
In C++11, the lambda expression provides a more succinct way to do the same thing.

Closure (computer programming)

closuresclosurelexical closure
A lambda can optionally be a closure.
As of the 2011 revision, the C++ language also supports closures, which are a type of function object constructed automatically from a special language construct called lambda-expression.

Allocator (C++)

allocatorsAllocatorC++ allocators
Among the many areas of improvement considered were standard library allocators.
The 2011 revision of the C++ Standard removed the weasel words requiring that allocators of a given type always compare equal and use normal pointers.

Resource acquisition is initialization

RAIIclosure blocksConstructor Acquires Destructor Releases
These are accessible via Resource Acquisition Is Initialization (RAII) locks ( and ) and locking algorithms for easy use.
The following C++11 example demonstrates usage of RAII for file access and mutex locking:

Assertion (software development)

assertionsassertionassert
C++03 provides two methods to test assertions: the macro and the preprocessor directive.
C11 and C++11 support static assertions directly through.

Template (C++)

templatetemplatesC++ templates
Many algorithms can operate on different types of data; C++'s templates support generic programming and make code more compact and useful.
Since C++11, templates may be either variadic or non-variadic; in earlier versions of C++ they are always non-variadic.

Sequence point

sequence points
The term sequence point was removed, being replaced by specifying that either one operation is sequenced before another, or that two operations are unsequenced.
With C++11, usage of the term sequence point has been replaced by sequencing.