Basic concepts.
Comments ASCII chart Punctuation Names and identifiers Types – Fundamental types Object – Scope – Lifetime Definitions and ODR Name lookup qualified – unqualified (ADL) As-if rule Undefined behavior (UB) Memory model and data races Character sets and encodings Phases of translation The main function Modules (C++20) .
Keywords.
Preprocessor.
#if - #ifdef - #ifndef - #elif #elifdef - #elifndef (C++23) #define - # - ## #include - #pragma #line - #error - #warning (C++23) .
Expressions.
Value categories Evaluation order and sequencing Constant expressions Operators assignment – arithmetic increment and decrement logical – comparison member access and indirection call, comma, ternary sizeof – alignof (C++11) new – delete – typeid alternative representation Operator overloading Default comparisons (C++20) Operator precedence Conversions implicit – explicit – user-defined Usual arithmetic conversions static_cast – dynamic_cast const_cast – reinterpret_cast Literals (Escape sequences) boolean – integer – floating character – string nullptr (C++11) user-defined (UDL) (C++11) .
| Declarations.
Namespace declaration Namespace alias References – Pointers – Arrays Structured bindings (C++17) Enumerations and enumerators Storage duration and linkage Translation-unit-local (C++20) Language linkage inline specifier Inline assembly const /volatile constexpr (C++11) consteval (C++20) constinit (C++20) decltype (C++11) – auto (C++11) typedef – Type alias (C++11) Elaborated type specifiers Attributes (C++11) alignas (C++11) static_assert (C++11) .
Initialization.
Default initialization Value initialization Copy initialization Direct initialization Aggregate initialization List initialization (C++11) Reference initialization Static non-local initialization zero – constant Dynamic non-local initialization ordered – unordered Copy elision (RVO).
Functions.
Function declaration Default arguments Variadic arguments Lambda expression (C++11) Argument-dependent lookup Overload resolution Operator overloading Address of an overload set Coroutines (C++20) .
Statements.
if – switch for – range-for (C++11) while – do -while continue – break – goto – return synchronized and atomic (TM TS) .
| Classes.
Class types – Union types injected-class-name Data members – Bit-fields Member functions – The this pointer Static members – Nested classes Derived class – using -declaration Empty base optimization (EBO) Virtual function – Abstract class (ABC) override (C++11) – final (C++11) Member access – friend Constructors and member initializer lists Default constructor – Destructor Copy constructor – Copy assignment Move constructor (C++11) Move assignment (C++11) Converting constructor explicit specifier .
Templates.
Template parameters and arguments Class template – Function template Variable template (C++14) Class member template Template argument deduction Class template argument deduction (CTAD) (C++17) Explicit specialization – Partial specialization Parameter packs (C++11) – sizeof... (C++11) Fold-expressions (C++17) Dependent names – SFINAE Constraints and concepts (C++20) Requires expression (C++20) .
Exceptions.
throw -expression try -catch block Function-try -block noexcept specifier (C++11) noexcept operator (C++11) Dynamic exception specification (until C++17*) .
Miscellaneous.
History of C++ Extending the namespace std Acronyms: CPO, IFNDR, NDR, NTBS, NTTP, RAO, SOCCC, TMP, TU.
Idioms.
Curiously Recurring Template Pattern (CRTP) Pointer to implementation (PIMPL) Resource acquisition is initialization (RAII) Rule of three/five/zero Zero-overhead principle .
|