Programming‎ > ‎Language‎ > ‎C++‎ > ‎

Version

Borland C++ 4.0 was my first C++ compiler

The language was invented in 1983 and it was standardized by ISO in 1998.

C++ 98
  • The first standard version of C++.

C++ 03
  • They found some bugs and fixed them five years later.

C++ 11
Types
  • auto - Deduce the type of a variable from its initializer.
  • decltype - Get the type of an expression.
  • enum class - Do not export their enumerators to the surrounding scope.
  • nullptr -
  • const  / mutable
 
Containers and iterators
  • Range-for - Iterate through a "range", defined by a begin() and end().
  • Initializer lists
  • Uniform initialization

Functional programming

Class improvements
  • Delegating constructors - Call a constructor from a constructor.
  • In-class member initializers - Initialized data member when it is declared in the class. Constructor's initialization to override.
  • override - Mark that a function is overiding a base class function.
  • final - Prevent a virtual function from being overridden further.
  • default -
  • delete -
 
Compile time improvements
  • constexpr - To mark functions to be evaluated at compile time.
  • static_assert - Assert to check things at compile time.

Std library improvements
  • std::shared_ptr
  • std::unique_ptr
  • std::weak_ptr
  • std::function
  • std::bind

Variadic templates

Move semantics
Rvalue references and move constructors

Other features
  • alignas - specify a desired alignment for some allocation
  • alignof - Returns the alignment of its argument
  • Extern template
  • Attributes noreturn and carries_dependency



C++ 14
Language
  • Binary literals - Use 0b to enter binary numbers.
  • Digit separators - Use ' to seperate numbers for readability, does not affect the numeric value. Ex int million = 1'000'000;
  • [[deprecated]] - Mark entity deprecated to give a warning message to discouraged use.
  • decltype(auto) -
  • Constexpr -
Library
  • make_unique -
  • Type transformation _t aliases


C++ 17
Language
  • Nested namespaces - Use namespace resolution operator to create nested namespace definitions.
  • [[fallthrough]]
  • [[nodiscard]]
  • [[maybe_unused]]
Library
  • std::variant
  • std::optional
  • std::any
  • std::string_view
  • std::filesystem
  • std::invoke
  • std::apply
  • Parallel algorithms

Reference


Comments