History of C++
- 1979: C with Classes first implemented
- New features: classes, member functions, derived classes, separate compilation, public and private access control, friends, type checking of function arguments, default arguments, inline functions, overloaded assignment operator, constructors, destructors, f() same as f(void), call-function and return-function (synchronization features, not in C++)
- Libraries: the concurrent task library (not in C++)
- 1982: C with Classes reference manual published
- 1984: C84 implemented, reference manual published
- 1985: Cfront 1.0
- New features: virtual functions, function and operator overloading, references, new and delete operators, the keyword const, scope resolution operator
- Library additions: complex, string, iostream
- 1985: The C++ Programming Language, 1st edition
- 1989: Cfront 2.0
- New features: multiple inheritance, pointers to members, protected access, type-safe linkage, abstract classes, static and const member functions, class-specific new and delete
- Library additions: I/O manipulators
- 1990: The Annotated C++ Reference Manual
This book described the language as designed, including some features that were not yet implemented. It served as the de-facto standard until the ISO.
- 1991: Cfront 3.0
- 1991: The C++ Programming Language, 2nd edition
- 1990 ANSI C++ Committee founded
- 1991 ISO C++ Committee founded
- New features: RTTI (dynamic_cast, typeid), covariant return types, cast operators, mutable, bool, declarations in conditions, template instantiations, member templates, export
- Library additions: containers, algorithms, iterators, function objects (based on STL), locales, bitset, valarray, auto_ptr, templatized string, iostream, and complex.
- 1998 The C++ Programming Language, 3rd edition
- 1999 Boost founded by the committee members to produce new high-quality candidate libraries for the standard.
This was a minor revision, intended to be little more than a technical corrigendum
- New features: value initialization
- Defect Reports fixed: 125 defects, including defect 69, which made std::vector contiguous.
- 2006 Performance TR (ISO/IEC TR 18015:2006) (ISO Store) (2006 draft)
- 2007 Library extension TR1 (ISO/IEC TR 19768:2007) (ISO store) (2005 draft).
This TR is a C++ library extension, which adds the following to the C++ standard library:
- From Boost: Reference wrapper, Smart pointers, Member function, Result Of, Bind, Function, Type Traits, Random, Mathematical Special Functions, Tuple, Array, Unordered Containers (including Hash), and Regular Expressions.
- From C99: mathematical functions from math.h that were new in C99, blank character class, Floating-point environment, hexfloat I/O Manipulator, fixed-size integral types, the long long type, va_copy, the snprintf() and vscanf() families of functions, and the C99 conversion specifies for printf() and scanf() families of functions.
All of TR1 except for the special functions was included in C++11, with minor changes.
This TR is a C++ standard library extension, which adds the special functions that were part of TR1, but were not included in C++11: elliptic integrals, exponential integral, Laguerre polynomials, Legendre polynomials, Hermite polynomials, Bessel functions, Newmann functions, beta function, and Riemann zeta function.
A large number of changes were introduced to both standardize existing practices and improve the abstractions available to the C++ programmers
- New language features: auto and decltype, defaulted and deleted functions, final and override, trailing return type, rvalue references, move constructors/move assignment, scoped enums, constexpr and literal types, list initialization, delegating and inherited constructors, brace-or-equal initializers, nullptr, long long, char16_t and char32_t, type aliases, variadic templates, generalized unions, generalized PODs, Unicode string literals, user-defined literals, attributes, lambda expressions, noexcept, alignof and alignas, multithreaded memory model, thread-local storage, GC interface, range for (based on a Boost library), static assertions (based on a Boost library)
- New library features: atomic operations library, emplace() and other use of rvalue references throughout all parts of the existing library, std::initializer_list, stateful and scoped allocators, forward_list, chrono library, ratio library, new algorithms, Unicode conversion facets
- From TR1: all of TR1 except Special Functions.
- From Boost: The thread library, exception_ptr, error_code and error_condition, iterator improvements (std::begin, std::end, std::next, std::prev)
- From C: C-style Unicode conversion functions
- Defect Reports fixed: 363 defects resolved by the 2008 draft and 322 defects resolved after. Notable defects include 530, which made std::basic_string objects contiguous.
This TR implements the decimal floating-point types from IEEE 754-2008 Standard for Floating-Point Arithmetic: std::decimal::decimal32, std::decimal::decimal64, and std::decimal::decimal128.
- 2012 The Standard C++ Foundation founded
- 2013 The C++ Programming Language, 4th edition
- 2014 C++14 (2014 final draft)
The next minor revision of the C++ standard
- New language features: variable templates, polymorphic lambdas, move capture for lambdas, new/delete elision, relaxed restrictions on constexpr functions, binary literals, digit separators, return type deduction for functions, aggregate initialization for classes with brace-or-equal initializers.
- New library features: std::make_unique, std::shared_mutex and std::shared_lock, std::index_sequence, std::exchange, std::quoted, and many small improvements to existing library facilities, such as two-range overloads for some algorithms, type alias versions of type traits, user-defined string, duration, and complex number literals, etc.
- Defect Reports fixed: 149 library issues
- Library fundamentals TS, Filesystem TS, and other experimental technical specifications
- 2017 C++17
The next major revision of the C++ standard