C++ language

This is a reference of the core C++ language constructs.

Basic concepts.

Comments
ASCII chart
Names and identifiers
Types - Fundamental types
Object - Scope - Lifetime
Definitions and ODR
Name lookup
qualified - unqualified
As-if rule
Undefined behavior
Memory model and data races
Phases of translation
The main() function
Modules(C++20)
.

C++ Keywords.

Preprocessor.

#if - #ifdef - #else - #endif
#define - # - ## - #include
#error - #pragma - #line
.

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
Operator overloading
Default comparisons(C++20)
Operator precedence
Conversions
implicit - explicit - user-defined
static_cast - dynamic_cast
const_cast - reinterpret_cast
Literals
boolean - integer - floating
character - string
nullptr(C++11)
user-defined (C++11)
.

Declaration.

Namespace declaration
Namespace alias
Lvalue and rvalue references
Pointers - Arrays
Structured bindings(C++17)
Enumerations and enumerators
Storage duration and linkage
Language linkage
inline specifier
Inline assembly
const/volatile - constexpr(C++11)
decltype(C++11) - auto(C++11)
alignas(C++11)
typedef - Type alias(C++11)
Elaborated type specifiers
Attributes(C++11)
static_assert(C++11)
.

Initialization.

Default initialization
Value initialization(C++03)
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.

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 - Member functions
Static members - Nested classes
Derived class - using-declaration
Empty base optimization
Virtual function - Abstract class
override(C++11) - final(C++11)
Member access - friend
Bit fields - The this pointer
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
Class member template
Variable template(C++14)
Template argument deduction
Explicit specialization
Class template argument deduction(C++17)
Partial specialization
Parameter packs(C++11) - sizeof...(C++11)
Fold-expressions(C++17)
Dependent names - SFINAE
Constraints and concepts (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.

Idioms.

Resource acquisition is initialization
Rule of three/five/zero
Pointer to implementation.

See also

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/cpp/language