C++ language

Curated hub for core C++ language rules: declarations, types, expressions, classes, templates, object model, initialization, and execution semantics.

The C++ language area is where syntax turns into semantics: declarations introduce entities, expressions produce values and side effects, classes define object structure, templates generalize code, and the object model governs lifetime, storage, and initialization. This hub is the practical entry point into those core rules.

Use this page for the language itself. For library facilities, start from the standard library hub or one of the major library areas such as containers, utility, or I/O.

# Start Here

Declarations and names

Start here when the question is about introducing entities, definitions, lookup, linkage, or what a declaration actually means.

Types and object model

Use this route for type categories, cv/ref rules, objects, lifetime, storage duration, and value categories.

Expressions and operators

Choose this route for operator semantics, overload resolution, conversions, evaluation order, and expression forms.

Classes and special members

Start here for class structure, inheritance, access control, constructors, assignment, destruction, and object-oriented language rules.

Templates and generic code

Use this route for template parameters, deduction, specialization, SFINAE, constraints, and generic programming mechanics.

Initialization and execution model

Use this route for initialization forms, constant initialization, exceptions, threading model, and translation/runtime rules.

# Quick Map

If your question is aboutStart withTypical follow-ups
What a declaration introduces or when two declarations conflictDeclarationsDefinitions, Conflicting declarations, Names
How an expression is formed, converted, or evaluatedExpressionsImplicit conversion, Operators, Evaluation order
How types, references, cv-qualification, or value categories behaveTypesReferences, cv qualification, Value categories
How classes, constructors, inheritance, or virtual dispatch workClassesclass, Inheritance, Destructor, override
How templates are instantiated, constrained, or specializedTemplatesTemplate parameters, Specialization, SFINAE, requires
How an object is initialized or when its lifetime beginsInitializationCopy initialization, List initialization, Lifetime
How the program executes, throws, or interacts across translation boundariesExceptions, Translation phases, Multi-threaded executionsnoexcept, main, Modules

# Core Language Areas

AreaKey pagesUse it for
Declarations, names, and lookupDeclarations, Definitions, Lookup, NamespaceUnderstanding how entities are introduced, found, and distinguished across scopes.
Type system and object modelTypes, type-id, Object, Storage duration, LifetimeType categories, object identity, lifetime, storage, and representation-level rules.
Expressions, operators, conversionsExpressions, Operators, Implicit conversion, Usual arithmetic conversionsHow computations are formed and how operands convert and combine.
Classes and member modelClasses, Access, Member functions, virtual, friendClass structure, inheritance, dispatch, access control, and special member behavior.
Templates and generic programmingTemplates, Template parameters, Deduction, Constraints, SFINAEGeneric code formation, deduction, specialization, and modern constrained templates.
Initialization and value propagationInitialization, Copy elision, Reference initialization, Move constructionHow objects are initialized, copied, moved, elided, and bound to references.
Execution and translation modelExceptions, Memory model, Multi-threaded executions, Translation phases, ModulesProgram execution rules, concurrency semantics, compile pipeline, and module boundaries.

# Practical Routes

I need a type rule

Start here when the issue is references, cv-qualification, type identity, object lifetime, or value categories.

I need an expression or operator rule

Start here when the answer depends on conversions, precedence, overload resolution, or evaluation order.

I need a class or template rule

Start here for constructors, inheritance, templates, specialization, and constraints.

I need initialization or lifetime behavior

Start here when the problem is initialization form, copy elision, storage duration, lifetime extension, or object materialization.

# Boundary Lines

If you actually need...Go here
Library vocabulary types, type traits, or utility helpers rather than language rulesUtility, <type_traits>
Library concurrency primitives instead of the core memory/execution modelThread support, Atomic operations
Preprocessor directives, macros, or translation-unit text processingPreprocessor
C language semantics instead of C++ language semanticsC language