Version
Borland C++ 4.0 was my first C++ compiler
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