Namespaces
Variants
Views
Actions

History of C++

From cppreference.com
< cpp‎ | language
Revision as of 12:08, 13 September 2024 by Benio (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
 
 
C++ language
General topics
Flow control
Conditional execution statements
if
Iteration statements (loops)
for
range-for (C++11)
Jump statements
Functions
Function declaration
Lambda function expression
inline specifier
Dynamic exception specifications (until C++17*)
noexcept specifier (C++11)
Exceptions
Namespaces
Types
Specifiers
const/volatile
decltype (C++11)
auto (C++11)
constexpr (C++11)
consteval (C++20)
constinit (C++20)
Storage duration specifiers
Initialization
Expressions
Alternative representations
Literals
Boolean - Integer - Floating-point
Character - String - nullptr (C++11)
User-defined (C++11)
Utilities
Attributes (C++11)
Types
typedef declaration
Type alias declaration (C++11)
Casts
Memory allocation
Classes
Class-specific function properties
explicit (C++11)
static

Special member functions
Templates
Miscellaneous
History of C++
 

Contents

[edit] Early C++

  • 1979: C with Classes first implemented
  1. 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++)
  2. 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
  1. New features: virtual functions, function and operator overloading, references, new and delete operators, the keyword const, scope resolution operator
  2. Library additions: complex number, string (AT&T version), I/O stream
  • 1985: The C++ Programming Language, 1st edition
  • 1986: The "whatis?" paper documenting the remaining design goals, including multiple inheritance, exception handling, and templates.
  • 1987: C++ support in GCC 1.15.3
  • 1989: Cfront 2.0
  1. New features: multiple inheritance, pointers to members, protected access, type-safe linkage, abstract classes, static and const-qualified member functions, class-specific new and delete
  2. 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.

  1. New features: namespaces, exception handling, nested classes, templates
  • 1991: Cfront 3.0
  • 1991: The C++ Programming Language, 2nd edition

[edit] Standard C++

  • 1990: ANSI C++ Committee founded
  • 1991: ISO C++ Committee founded
  • 1992: STL implemented in C++

[edit] C++98/03 period

  • 1998: C++98 (ISO/IEC 14882:1998)
  1. New features: RTTI (dynamic_cast, typeid), covariant return types, cast operators, mutable, bool, declarations in conditions, template instantiations, member templates, export
  2. Library additions: locales, bitset, valarray, auto_ptr, templatized string, I/O streams, and complex numbers.
  3. Based on STL: containers, algorithms, iterators, function objects
  • 1998: The C++ Programming Language, 3rd edition
  • 1999: Boost founded by the committee members to produce new high-quality candidate libraries for the standard.
  • 2003: C++03 (ISO/IEC 14882:2003)

This was a minor revision, intended to be little more than a technical corrigendum. This revision introduces the definition of value initialization.

Defect Reports fixed in C++03 (92 core, 125 library)