C++98
C++03
C++11 / C++0x
Core language runtime performance enhancements
- Rvalue references and move constructors
- constexpr – Generalized constant expressions
- Modification to the definition of plain old data
Core language build-time performance enhancements
- Extern template
Core language usability enhancements
- Initializer lists
- Uniform initialization
- Type inference
- Range-based for loop
- Lambda functions and expressions
- Alternative function syntax
- Object construction improvement
- Explicit overrides and final
- Null pointer constant
- Strongly typed enumerations
- Right angle bracket
- Explicit conversion operators
- Template aliases
- Unrestricted unions
Core language functionality improvements
- Variadic templates
- New string literals
- User-defined literals
- Multithreading memory model
- Thread-local storage
- Explicitly defaulted special member functions
- Explicitly deleted functions
- Type long long int
- Static assertions
- Allow sizeof to work on members of classes without an explicit object
- Control and query object alignment
- Allow garbage collected implementations
- Attributes
C++ standard library changes
Upgrades to standard library components
- Rvalue references and the associated move support
- Support for the UTF-16 encoding unit, and UTF-32 encoding unit Unicode character types
- Variadic templates (coupled with Rvalue references to allow for perfect forwarding)
- Compile-time constant expressions
decltype
explicit
conversion operators- Functions declared defaulted or deleted
Threading facilities
std::thread
std::mutex
std::condition_variable
std::async
std::future
Tuple types
Hash tables
Regular expressions
General-purpose smart pointers
Extensible random number facility
Wrapper reference
Polymorphic wrappers for function objects
Type traits for metaprogramming
Uniform method for computing the return type of function objects
C++14 / C++1y
New language features
Function return type deduction
auto
Alternate type deduction on declaration
decltype
Relaxed constexpr restrictions
Variable templates
Aggregate member initialization