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