Skip to content

CodeNebula — C++ Master Concepts Index ​

The complete reference to every C++ concept from C++98 through C++26.

StandardsConceptsFormat


At a Glance ​

C++98C++03C++11C++14C++17C++20C++23C++26Total
Core Language523531019391311200
STL161216013782457633768
Total213521323972848944968

C++98 — The Foundation ​

52 core language features · 161 STL components | Core Language · STL

The original ISO C++ standard. Established classes, templates, the STL, and exception handling as the building blocks of C++.

Core Language ​

ConceptDescription
Basic types (int, float, double, char, bool)Fundamental built-in data types for values
Enumerations (unscoped enums)Named integer constants grouped under a type
UnionsMemory-sharing type that holds one member at a time
BitfieldsSpecify exact bit widths for struct members
sizeof operatorQuery the byte size of a type or object
PointersVariables storing memory addresses of objects
ReferencesAliases to existing objects, cannot be null
ArraysFixed-size contiguous sequences of elements
FunctionsNamed blocks of reusable executable code
Function overloadingMultiple functions sharing a name, differing in parameters
Default argumentsParameter values used when caller omits them
Inline functionsHint to expand function body at the call site
Function pointersPointers that store addresses of functions
Pointers to membersPointers to class data members or member functions
ClassesUser-defined types bundling data and behavior
ObjectsInstances of classes with their own state
ConstructorsSpecial functions that initialize objects
Copy constructorCreates a new object as a copy of another
DestructorsClean up resources when objects are destroyed
Copy assignment operatorAssigns one object's state to another existing object
Conversion functionsImplicit or explicit type-conversion operators
Inheritance — SingleDerive a class from one base class
Inheritance — MultipleDerive a class from two or more base classes
Inheritance — VirtualResolve diamond-problem ambiguity in inheritance hierarchies
PolymorphismObjects of different types respond to the same interface
Virtual functionsFunctions resolved at runtime via vtable dispatch
Pure virtual functionsDeclare interface methods with no base implementation
Abstract classesClasses with pure virtuals that cannot be instantiated
EncapsulationBundling data with methods that control access
Access specifiers (public, private, protected)Control visibility of class members
Friend functionsNon-member functions granted access to private members
Friend classesClasses granted access to another class's privates
Nested classesClasses defined inside another class's scope
Local classesClasses defined inside a function body
Operator overloadingDefine custom behavior for built-in operators
Function templatesGeneric functions parameterized by type
Class templatesGeneric classes parameterized by type
Exception handling (try, catch, throw)Structured error propagation and recovery
NamespacesNamed scopes to prevent identifier collisions
Scope resolution operator (::)Access members of a namespace, class, or enum
Dynamic memory (new, delete)Heap allocation and deallocation of objects
Type casting (static_cast, dynamic_cast, const_cast, reinterpret_cast)Explicit type conversions with varying safety levels
RTTI (Run-time type information)Identify object types at runtime
typeidRetrieve type information of an expression at runtime
Storage class specifiers (static, extern, register)Control storage duration and linkage of variables
volatile keywordPrevent compiler optimization of memory reads/writes
mutable keywordAllow modification of a member inside const methods
Conditional (ternary) operatorInline condition ? true_val : false_val expression
Comma operatorEvaluate two expressions, return the second
Preprocessor directives (#define, #include, #ifdef, etc.)Compile-time text substitution and conditional compilation

STL ​

Containers ​

ContainerDescription
std::vectorDynamic array with contiguous storage
std::listDoubly-linked list for fast insert/erase anywhere
std::dequeDouble-ended queue with fast front/back operations
std::setSorted unique-element container (red-black tree)
std::mapSorted key-value associative container
std::multisetSorted container allowing duplicate elements
std::multimapSorted key-value container allowing duplicate keys
std::stackLIFO container adaptor
std::queueFIFO container adaptor
std::priority_queueHeap-based priority container adaptor
std::bitsetFixed-size sequence of bits with bitwise operations

Iterators ​

IteratorDescription
Input iteratorRead-only, single-pass forward traversal
Output iteratorWrite-only, single-pass forward traversal
Forward iteratorRead/write, multi-pass forward traversal
Bidirectional iteratorForward + backward traversal
Random access iteratorBidirectional + constant-time jumps
Iterator traitsType information query for iterator properties
std::iteratorBase class template for custom iterators
std::advanceMove iterator forward by N positions
std::distanceCount elements between two iterators
std::next / std::prevReturn iterator advanced/retreated by N
Iterator Adaptors (8)
AdaptorDescription
std::reverse_iteratorTraverse a range in reverse order
std::back_insert_iteratorInsert at container back via push_back
std::front_insert_iteratorInsert at container front via push_front
std::insert_iteratorInsert at a specified position
std::istream_iteratorRead values from an input stream
std::ostream_iteratorWrite values to an output stream
std::istreambuf_iteratorRead characters from a stream buffer
std::ostreambuf_iteratorWrite characters to a stream buffer
Algorithms (54)
AlgorithmPurpose
std::for_eachApply a function to every element in a range
std::findFind first element equal to a value
std::find_ifFind first element satisfying a predicate
std::find_endFind last occurrence of a subsequence
std::find_first_ofFind first element from a set of candidates
std::adjacent_findFind first pair of adjacent equal elements
std::countCount elements equal to a value
std::count_ifCount elements satisfying a predicate
std::mismatchFind first position where two ranges differ
std::equalCheck if two ranges are element-wise equal
std::searchFind first occurrence of a subsequence
std::search_nFind N consecutive copies of a value
std::copyCopy elements from one range to another
std::copy_backwardCopy elements backward (from end to start)
std::move (algorithm)Move elements from one range to another
std::move_backwardMove elements backward within a range
std::fillFill a range with a value
std::fill_nFill the first N positions with a value
std::transformApply a function to each element, store results
std::generateFill range with values from a generator function
std::generate_nFill first N positions from a generator
std::removeMove non-matching elements to front (erase-remove idiom)
std::remove_ifRemove elements satisfying a predicate
std::replaceReplace all occurrences of a value
std::replace_ifReplace elements satisfying a predicate
std::swapExchange the values of two objects
std::swap_rangesSwap elements of two ranges
std::iter_swapSwap values pointed to by two iterators
std::reverseReverse element order in a range
std::reverse_copyCopy a range in reverse order
std::rotateRotate elements so a given element becomes first
std::rotate_copyCopy a rotated range
std::uniqueRemove consecutive duplicate elements
std::unique_copyCopy without consecutive duplicates
std::partitionReorder so predicate-true elements come first
std::stable_partitionPartition preserving relative order
std::sortSort elements in ascending order
std::stable_sortSort preserving relative order of equal elements
std::partial_sortSort only the first N elements
std::partial_sort_copyCopy and partially sort into another range
std::nth_elementPlace Nth element in its sorted position
std::mergeMerge two sorted ranges into one
std::inplace_mergeMerge two consecutive sorted subranges in-place
std::includesCheck if one sorted range contains another
std::set_unionUnion of two sorted ranges
std::set_intersectionIntersection of two sorted ranges
std::set_differenceDifference of two sorted ranges
std::set_symmetric_differenceSymmetric difference of two sorted ranges
std::push_heapAdd an element to a heap
std::pop_heapRemove the top element from a heap
std::make_heapRearrange a range into a heap
std::sort_heapSort a heap into ascending order
std::min / std::maxReturn the smaller/larger of two values
std::min_element / std::max_elementFind the smallest/largest element in a range
std::lexicographical_compareCompare two ranges lexicographically
std::next_permutation / std::prev_permutationGenerate the next/previous permutation
Numeric Algorithms (4)
AlgorithmPurpose
std::accumulateFold a range into a single value (left fold)
std::inner_productCompute dot product of two ranges
std::partial_sumCompute running cumulative sums
std::adjacent_differenceCompute differences between consecutive elements
Function Objects / Functors (24)
FunctorDescription
std::unary_functionBase for unary function objects (deprecated C++11)
std::binary_functionBase for binary function objects (deprecated C++11)
std::plusBinary functor for addition
std::minusBinary functor for subtraction
std::multipliesBinary functor for multiplication
std::dividesBinary functor for division
std::modulusBinary functor for modulo
std::negateUnary functor for negation
std::equal_toBinary comparison for ==
std::not_equal_toBinary comparison for !=
std::greaterBinary comparison for >
std::lessBinary comparison for <
std::greater_equalBinary comparison for >=
std::less_equalBinary comparison for <=
std::logical_andBinary functor for logical AND
std::logical_orBinary functor for logical OR
std::logical_notUnary functor for logical NOT
std::unary_negateNegate a unary predicate
std::binary_negateNegate a binary predicate
std::binder1st / std::binder2ndBind an argument to a binary function (deprecated C++11)
std::pointer_to_unary_functionWrap a unary function pointer as a functor
std::pointer_to_binary_functionWrap a binary function pointer as a functor
std::mem_funWrap member function via pointer (deprecated C++11)
std::mem_fun_refWrap member function via reference (deprecated C++11)

Utilities ​

UtilityDescription
std::pairHold two heterogeneous values as a single unit
std::stringDynamic character string with rich operations
std::auto_ptrOwnership-transferring smart pointer (deprecated C++11)
std::rel_opsGenerate relational operators from == and <
std::numeric_limitsQuery properties of arithmetic types
Numerics (2)
ComponentDescription
std::valarrayNumeric array with element-wise operations
std::complexComplex number representation and arithmetic
Memory (1)
ComponentDescription
std::allocatorDefault memory allocator for STL containers
Exception Classes (14)
ExceptionDescription
std::exceptionBase class for all standard exceptions
std::runtime_errorError detectable only at runtime
std::logic_errorError due to flawed program logic
std::out_of_rangeIndex or key outside valid bounds
std::invalid_argumentInvalid argument passed to a function
std::overflow_errorArithmetic overflow detected
std::underflow_errorArithmetic underflow detected
std::length_errorAttempt to exceed maximum allowed size
std::domain_errorMath function called outside its domain
std::range_errorResult outside representable range
std::bad_allocMemory allocation failure
std::bad_castInvalid dynamic_cast on a reference
std::bad_typeidtypeid applied to a null polymorphic pointer
std::bad_exceptionUnexpected exception handling failure
Localization (2)
ComponentDescription
std::localeEncapsulate cultural formatting conventions
std::locale::facetBase class for locale-specific formatting facets
Input/Output (10)
ComponentDescription
std::iostreamCombined input/output stream
std::istreamInput stream for reading data
std::ostreamOutput stream for writing data
std::fstreamFile-based input/output stream
std::ifstreamFile input stream
std::ofstreamFile output stream
std::stringstreamString-based input/output stream
std::streambufLow-level stream buffer abstraction
std::ios_baseBase class for all I/O stream state
std::cin / std::cout / std::cerr / std::clogStandard global I/O stream objects
C Library Wrappers (9)
HeaderPurpose
<cmath>Mathematical functions (sin, cos, sqrt, pow, etc.)
<cstdlib>General utilities (malloc, rand, atoi, exit, etc.)
<cstring>C string manipulation (strlen, strcpy, memcpy, etc.)
<cstdio>C-style I/O (printf, scanf, FILE, etc.)
<cctype>Character classification (isalpha, isdigit, toupper, etc.)
<climits>Integer type limits (INT_MAX, LONG_MIN, etc.)
<cfloat>Floating-point type limits (FLT_MAX, DBL_EPSILON, etc.)
<cassert>Runtime assertion macro
<ctime>Date and time utilities (time, clock, difftime, etc.)

C++03 — The Bug-Fix Release ​

3 core language features · 2 STL fixes | Core Language · STL

A technical correction release that refined value initialization rules and fixed ambiguities. No major new features.

Core Language ​

ConceptDescription
Value initialization (refined rules)Clarified zero- and default-initialization behavior
Explicit template argument specification for constructorsExplicitly specify template args when calling templated constructors
POD type definition refinementClarified rules for Plain Old Data type compatibility

STL ​

ComponentDescription
std::vector<bool> improvementsBug fixes for the specialized bool vector
Algorithm behavior fixesMinor corrections to algorithm specifications

C++11 — Modern C++ Revolution ​

53 core language features · 160 STL additions | Core Language · STL

The standard that transformed C++ into a modern language. Introduced move semantics, lambdas, smart pointers, auto, and built-in threading support.

Core Language ​

ConceptDescription
auto keywordAutomatic type deduction from initializers
decltypeQuery the type of an expression at compile time
Range-based for loopsIterate over containers with concise for(auto& x : v) syntax
Lambda expressionsAnonymous inline functions with variable capture
nullptrType-safe null pointer constant replacing NULL
Strongly-typed enums (enum class)Scoped enumerations preventing implicit integer conversion
Type traitsCompile-time type property queries and transformations
static_assertCompile-time assertion with custom error message
Variadic templatesTemplates accepting any number of type/value arguments
Template aliases (using)Create type aliases for template instantiations
Rvalue referencesReferences to temporaries (&&) enabling move semantics
Move semanticsTransfer resources from temporaries instead of copying
Move constructorConstruct by stealing resources from an rvalue
Move assignment operatorAssign by stealing resources from an rvalue
Perfect forwardingPreserve value category when passing through templates
std::forwardCast to preserve lvalue/rvalue nature during forwarding
std::moveCast an lvalue to an rvalue to enable moving
Initializer listsBrace-enclosed lists for uniform container initialization
Uniform initializationConsistent {} syntax for all initialization contexts
Delegating constructorsOne constructor calls another in the same class
In-class member initializers (NSDMI)Default member values declared at the point of definition
Explicit conversion operatorsPrevent implicit use of user-defined conversions
override keywordVerify a virtual function overrides a base class method
final keywordPrevent further overriding or derivation
noexcept specifierDeclare that a function does not throw exceptions
constexpr (generalized)Mark functions/variables evaluable at compile time
User-defined literalsCreate custom literal suffixes (e.g., 42_km)
Raw string literalsStrings with no escape processing (R"(...)")
Trailing return typesDeclare return type after parameter list with -> T
extern templateSuppress implicit template instantiation in a TU
thread_local storageVariables with per-thread lifetime and storage
alignas and alignofControl and query memory alignment of types
char16_t, char32_tFixed-width Unicode character types
Unicode string literals (u8"", u"", U"")UTF-8/16/32 string prefixes
Inheriting constructorsImport base class constructors into derived class
Unrestricted unionsUnions can hold members with non-trivial special functions
Attributes ([[noreturn]], [[carries_dependency]])Standardized annotation syntax for compiler hints
std::threadLaunch and manage OS-level threads
std::mutexMutual exclusion lock for thread synchronization
std::lock_guardRAII scoped mutex lock
std::unique_lockFlexible RAII mutex lock with deferred/timed locking
std::condition_variableBlock threads until notified by another thread
std::atomicLock-free atomic operations on shared variables
Memory modelFormal rules for multi-threaded memory access ordering
std::futureRetrieve a value from an asynchronous operation
std::promiseSet a value to be retrieved by a future
std::asyncLaunch a function asynchronously, returning a future
std::shared_ptrReference-counted shared ownership smart pointer
std::unique_ptrExclusive ownership smart pointer with zero overhead
std::weak_ptrNon-owning observer of a shared_ptr-managed object
=default and =deleteExplicitly default or suppress special member functions

STL ​

Containers ​

ContainerDescription
std::arrayFixed-size stack-allocated container
std::forward_listSingly-linked list optimized for insert/erase
std::unordered_setHash-based unique-element container
std::unordered_mapHash-based key-value associative container
std::unordered_multisetHash-based container allowing duplicate elements
std::unordered_multimapHash-based key-value container allowing duplicate keys
Container Improvements (8)
ImprovementDescription
std::vector emplace_back/emplaceConstruct elements in-place inside vector
std::list emplace_front/emplace_back/emplaceConstruct elements in-place inside list
std::deque emplace_front/emplace_back/emplaceConstruct elements in-place inside deque
std::map emplace/emplace_hintConstruct map entries in-place
std::set emplace/emplace_hintConstruct set entries in-place
std::unordered_map emplace/emplace_hintConstruct unordered_map entries in-place
std::unordered_set emplace/emplace_hintConstruct unordered_set entries in-place
std::initializer_list supportAll containers accept brace-enclosed initialization

Iterators ​

IteratorDescription
std::begin / std::endFree functions for range begin/end
std::cbegin / std::cendFree functions for const begin/end
std::rbegin / std::rendFree functions for reverse begin/end
std::crbegin / std::crendFree functions for const reverse begin/end
std::move_iteratorAdaptor that dereferences as an rvalue
Algorithms (17)
AlgorithmPurpose
std::all_ofCheck if predicate holds for all elements
std::any_ofCheck if predicate holds for any element
std::none_ofCheck if predicate holds for no elements
std::find_if_notFind first element where predicate is false
std::copy_ifCopy elements satisfying a predicate
std::copy_nCopy exactly N elements
std::move (algorithm)Move elements from one range to another
std::move_backwardMove elements backward within a range
std::shuffleRandomly reorder elements using a generator
std::is_sortedCheck if range is sorted
std::is_sorted_untilFind first out-of-order element
std::is_permutationCheck if one range is a permutation of another
std::is_heapCheck if range is a valid heap
std::is_heap_untilFind first element breaking heap property
std::minmaxReturn both min and max of two values
std::minmax_elementFind both min and max elements in a range
std::iotaFill range with sequentially increasing values

Function Objects ​

ComponentDescription
std::functionType-erased callable wrapper for any invocable
std::bindBind arguments to a callable, creating a new callable
std::ref / std::crefWrap a reference for use with std::bind and threads
std::mem_fnWrap a member function pointer into a callable object
Type Traits (33)
TraitDescription
std::is_integralCheck if type is an integer type
std::is_floating_pointCheck if type is a floating-point type
std::is_pointerCheck if type is a pointer type
std::is_arrayCheck if type is an array type
std::is_classCheck if type is a class or struct
std::is_enumCheck if type is an enumeration
std::is_voidCheck if type is void
std::is_sameCheck if two types are identical
std::is_base_ofCheck if one type derives from another
std::is_convertibleCheck if implicit conversion exists
std::is_trivially_copyableCheck if type can be copied with memcpy
std::is_trivially_constructibleCheck if type has trivial construction
std::is_trivially_destructibleCheck if type has trivial destruction
std::is_standard_layoutCheck if type has C-compatible memory layout
std::is_podCheck if type is Plain Old Data (deprecated C++20)
std::integral_constantCompile-time constant wrapper type
std::true_type / std::false_typeCompile-time boolean constants
std::enable_ifSFINAE helper to conditionally enable overloads
std::conditionalChoose between two types at compile time
std::common_typeDetermine the common type of multiple types
std::result_ofDetermine callable return type (deprecated C++17)
std::underlying_typeGet the underlying integer type of an enum
std::remove_referenceStrip reference qualifiers from a type
std::remove_cv / remove_const / remove_volatileStrip const/volatile qualifiers
std::add_lvalue_referenceAdd & to a type
std::add_rvalue_referenceAdd && to a type
std::make_signed / std::make_unsignedConvert integer type to signed/unsigned
std::decayApply array/function-to-pointer and remove cv/ref
std::aligned_storageAligned raw storage buffer (deprecated C++23)
std::aligned_unionAligned storage for any of several types (deprecated C++23)

Hashing ​

ComponentDescription
std::hashFunction object for computing hash values of types

Error Handling ​

ComponentDescription
std::system_errorException carrying an error code
std::error_codePlatform-dependent error code value
std::error_categoryAbstract base defining an error code domain
std::error_conditionPlatform-independent error condition

Utilities ​

UtilityDescription
std::tupleFixed-size heterogeneous value collection
std::forward_as_tupleCreate a tuple of references for forwarding
std::make_pair (move-aware)Construct a pair with move semantics support
std::piecewise_constructTag for piecewise construction of pairs
std::type_indexHashable wrapper for std::type_info
std::to_stringConvert numeric values to std::string
std::stoi / std::stol / std::stollConvert strings to integer types
std::stof / std::stod / std::stoldConvert strings to floating-point types
Random Number Generation (30)
ComponentDescription
std::random_deviceNon-deterministic random number source
std::mt19937 / std::mt19937_64Mersenne Twister engines (32/64-bit)
std::linear_congruential_engineLCG-based pseudo-random engine
std::mersenne_twister_engineConfigurable Mersenne Twister engine
std::subtract_with_carry_engineLagged Fibonacci pseudo-random engine
std::discard_block_engineEngine adaptor that discards output blocks
std::independent_bits_engineEngine adaptor for specific bit widths
std::shuffle_order_engineEngine adaptor that shuffles output
std::uniform_int_distributionUniform integers in [a, b]
std::uniform_real_distributionUniform reals in [a, b)
std::normal_distributionGaussian (bell curve) distribution
std::bernoulli_distributionBoolean distribution with probability p
std::binomial_distributionNumber of successes in N trials
std::negative_binomial_distributionTrials until K successes
std::geometric_distributionTrials until first success
std::poisson_distributionEvents per fixed interval
std::exponential_distributionTime between Poisson events
std::gamma_distributionGeneralized exponential distribution
std::weibull_distributionReliability / failure-time modeling
std::extreme_value_distributionGumbel distribution for extremes
std::lognormal_distributionLog-normal distribution
std::chi_squared_distributionChi-squared goodness-of-fit distribution
std::cauchy_distributionCauchy (Lorentz) distribution
std::fisher_f_distributionF-distribution for variance ratio tests
std::student_t_distributionStudent's t-distribution for small samples
std::discrete_distributionCustom discrete probability distribution
std::piecewise_constant_distributionPiecewise constant probability density
std::piecewise_linear_distributionPiecewise linear probability density
std::seed_seqSeed sequence for engine initialization
Regular Expressions (14)
ComponentDescription
std::regexCompiled regular expression pattern
std::regex_matchCheck if entire string matches a pattern
std::regex_searchSearch for a pattern within a string
std::regex_replaceReplace pattern matches in a string
std::regex_iteratorIterate over all matches in a string
std::regex_token_iteratorIterate over sub-matches or non-matching parts
std::smatch / std::cmatchMatch results for std::string / C-strings
std::wsmatch / std::wcmatchMatch results for wide strings
std::ssub_match / std::csub_matchSub-match for std::string / C-strings
std::wssub_match / std::wcsub_matchSub-match for wide strings
std::regex_errorException for regex compilation errors
Chrono Library (11)
ComponentDescription
std::chrono::durationRepresent a time interval with compile-time units
std::chrono::time_pointA point in time relative to a clock's epoch
std::chrono::system_clockWall-clock time tied to the system clock
std::chrono::steady_clockMonotonic clock that never adjusts backward
std::chrono::high_resolution_clockHighest-resolution available clock
std::chrono::nanosecondsDuration in nanoseconds
std::chrono::microsecondsDuration in microseconds
std::chrono::millisecondsDuration in milliseconds
std::chrono::secondsDuration in seconds
std::chrono::minutesDuration in minutes
std::chrono::hoursDuration in hours
Ratio Library (16)
ComponentDescription
std::ratioCompile-time rational number
std::ratio_add / ratio_subtractCompile-time rational addition/subtraction
std::ratio_multiply / ratio_divideCompile-time rational multiplication/division
std::ratio_equal / ratio_not_equalCompile-time rational equality comparison
std::ratio_less / ratio_less_equalCompile-time rational less-than comparison
std::ratio_greater / ratio_greater_equalCompile-time rational greater-than comparison
SI prefixes (std::atto through std::exa)Standard SI ratio typedefs

C++14 — Modern C++ Refined ​

10 core language features · 13 STL additions | Core Language · STL

A refinement release that polished C++11's rough edges. Relaxed constexpr, added generic lambdas, and introduced std::make_unique.

Core Language ​

ConceptDescription
Generic lambda expressionsLambdas with auto parameters for polymorphic calls
Lambda capture initializersInitialize new variables directly in the capture clause
Return type deductionCompiler deduces function return type from return statements
decltype(auto)Deduce type preserving references and cv-qualifiers
Variable templatesTemplates that define a family of variables
Binary literalsWrite integers in binary with 0b prefix
Digit separatorsUse ' to visually group digits in numeric literals
Relaxed constexprAllow loops, branches, and local variables in constexpr
[[deprecated]] attributeMark entities as deprecated with optional message
Aggregate member initialization relaxationMore flexible rules for aggregate initialization

STL ​

Utilities ​

UtilityDescription
std::make_uniqueSafely construct a unique_ptr without new
std::quotedI/O manipulator for quoted string round-tripping
std::exchangeReplace a value and return the old one
std::integer_sequence / std::index_sequenceCompile-time integer parameter packs
std::get<Type>() for tuplesAccess tuple element by type instead of index

Container Improvements ​

ComponentDescription
Heterogeneous lookupLook up in ordered containers without constructing a key
Transparent operator functors (std::less<>)Comparators that accept any compatible types

Type Traits ​

TraitDescription
std::is_finalCheck if a class is marked final

Threading ​

ComponentDescription
std::shared_timed_mutexShared mutex with timed locking support
std::shared_lockRAII lock for shared (reader) ownership

C++17 — Practical Modern C++ ​

19 core language features · 78 STL additions | Core Language · STL

Brought major quality-of-life improvements: structured bindings, if constexpr, std::optional/variant/any, std::filesystem, and parallel algorithms.

Core Language ​

ConceptDescription
Structured bindingsDecompose aggregates into named variables (auto [a,b] = ...)
if constexprCompile-time branch elimination in templates
Init-statements for if/switchDeclare variables in if/switch initializer
Inline variablesDefine variables in headers without ODR violations
Fold expressionsExpand parameter packs with binary operators
Template argument deduction for class templatesDeduce class template arguments from constructor args
CTAD (Class template argument deduction)Deduction guides for user-defined class templates
Nested namespace definitionsnamespace A::B::C { } instead of nested braces
__has_includePreprocessor check for header availability
[[nodiscard]]Warn if return value is discarded
[[maybe_unused]]Suppress unused-variable/parameter warnings
[[fallthrough]]Mark intentional switch case fall-through
Guaranteed copy elisionMandatory RVO for prvalue initialization
std::launderAccess an object at a reused storage location
constexpr lambda expressionsLambdas usable in constant expressions
Hexadecimal floating-point literalsWrite floating-point values in hex (0x1.2p3)
Using-declaration for parameter packsExpand pack into a using-declaration list
Aggregate initialization with base classesAggregate-init derived classes with base subobjects
Non-type template parameters autoDeduce non-type template parameter type automatically

STL ​

Containers ​

ContainerDescription
std::string_viewNon-owning lightweight view over a string
std::optionalValue-or-nothing container (no heap allocation)
std::variantType-safe discriminated union
std::anyType-safe container for any single value
Filesystem Library (28)
ComponentDescription
std::filesystem::pathPlatform-independent file path manipulation
std::filesystem::directory_entryRepresents a directory entry with cached attributes
std::filesystem::directory_iteratorIterate over entries in a directory
std::filesystem::recursive_directory_iteratorRecursively iterate directory trees
std::filesystem::file_statusFile type and permissions information
std::filesystem::space_infoFilesystem capacity, free, and available space
std::filesystem::file_typeEnumeration of file types
std::filesystem::permsFile permission bits
std::filesystem::copy_optionsOptions controlling copy behavior
std::filesystem::directory_optionsOptions for directory iteration
std::filesystem::create_directory / create_directoriesCreate one or more directories
std::filesystem::copy / copy_fileCopy files or directories
std::filesystem::remove / remove_allDelete files or directory trees
std::filesystem::renameMove or rename a file/directory
std::filesystem::resize_fileTruncate or extend a file
std::filesystem::spaceQuery filesystem space information
std::filesystem::last_write_timeGet/set file modification time
std::filesystem::permissionsModify file permissions
std::filesystem::current_pathGet/set current working directory
std::filesystem::temp_directory_pathGet the system temporary directory
std::filesystem::existsCheck if a path exists
std::filesystem::is_directoryCheck if path is a directory
std::filesystem::is_regular_fileCheck if path is a regular file
std::filesystem::is_symlinkCheck if path is a symbolic link
std::filesystem::file_sizeGet file size in bytes
std::filesystem::hard_link_countCount hard links to a file
Algorithms (9)
AlgorithmPurpose
std::sampleRandomly sample N elements from a range
std::for_each_nApply function to the first N elements
std::reduceGeneralized parallel-friendly accumulate
std::transform_reduceFused transform and reduce (parallel inner product)
std::inclusive_scanRunning sum including current element
std::exclusive_scanRunning sum excluding current element
std::transform_inclusive_scanFused transform + inclusive scan
std::transform_exclusive_scanFused transform + exclusive scan
Parallel algorithms (seq, par, par_unseq)Execute standard algorithms in parallel

Utilities ​

UtilityDescription
std::byteType-safe byte representation (not an integer)
std::applyCall a function with a tuple as arguments
std::invokeUniformly call any callable (function, member, functor)
std::is_invocable / std::is_invocable_rCheck if a callable can be invoked with given args
std::invoke_resultDetermine return type of a callable invocation
std::is_swappable / std::is_nothrow_swappableCheck if types support swap
std::void_tSFINAE helper that maps any types to void
std::bool_constantAlias for integral_constant<bool, V>
std::conjunction / std::disjunction / std::negationCompile-time logical operations on type traits
std::clampConstrain a value within a min/max range
std::from_chars / std::to_charsFast locale-independent number parsing/formatting
std::not_fnNegate a predicate callable
std::gcd / std::lcmGreatest common divisor / least common multiple
std::as_constObtain a const reference to an object
std::make_from_tupleConstruct an object from a tuple of arguments
std::has_unique_object_representationsCheck if type has unique bit representation
std::is_aggregateCheck if type is an aggregate
std::hardware_destructive_interference_sizeMinimum offset to avoid false sharing
std::hardware_constructive_interference_sizeMaximum size for true sharing

Polymorphic Memory Resources ​

ComponentDescription
std::pmr::memory_resourceAbstract base for custom memory allocation
std::pmr::polymorphic_allocatorAllocator that dispatches to a memory_resource
std::pmr::monotonic_buffer_resourceFast bump allocator, no individual deallocation
std::pmr::unsynchronized_pool_resourcePool allocator (single-threaded)
std::pmr::synchronized_pool_resourcePool allocator (thread-safe)

Container Improvements ​

ComponentDescription
std::map try_emplace / insert_or_assignInsert-if-absent or update-if-present in one call
std::unordered_map try_emplace / insert_or_assignSame for unordered maps
std::string_view starts_with / ends_withCheck string prefix/suffix
Node handle API (extract, insert)Move elements between compatible containers

Threading ​

ComponentDescription
std::shared_mutexShared (reader-writer) mutex without timed operations
std::scoped_lockRAII lock for multiple mutexes with deadlock avoidance

C++20 — The Big Four ​

39 core language features · 245 STL additions | Core Language · STL

The largest standard since C++11. Introduced the "Big Four": Concepts, Ranges, Coroutines, and Modules — plus std::format, the spaceship operator, and major threading additions.

Core Language ​

ConceptDescription
ConceptsNamed compile-time predicates constraining template arguments
Constraints and requires clausesExpress requirements on template parameters
Constrained templatesTemplates restricted to types satisfying a concept
Abbreviated function templatesvoid f(auto x) shorthand for simple templates
Three-way comparison (<=>)Single operator returning ordering of two values
std::strong_orderingThree-way result for types with unique equivalence
std::weak_orderingThree-way result where equivalent values may differ
std::partial_orderingThree-way result that allows incomparable values
Designated initializersInitialize aggregate members by name ({.x=1, .y=2})
using enumImport all enumerators of a scoped enum into scope
char8_tDistinct type for UTF-8 encoded characters
constinitEnsure a variable is initialized at compile time
Lambda: consteval call operatorLambdas as immediate (consteval) functions
Lambda: capture [*this] by valueCapture the current object by copy
Template lambdasLambdas with explicit template parameter lists
constexpr virtual functionsVirtual functions callable at compile time
constexpr dynamic allocationnew/delete allowed in constant expressions
constexpr std::stringstd::string usable at compile time
constexpr std::vectorstd::vector usable at compile time
Immediate functions (consteval)Functions that must be evaluated at compile time
Constant evaluation for NTTPsNon-type template parameters from constant evaluation
std::is_constant_evaluatedDetect if code is running at compile time
ModulesReplace headers with compiled, encapsulated module units
Import/export declarationsimport/export syntax for module interfaces
CoroutinesSuspendable/resumable functions for async and generators
co_awaitSuspend a coroutine until an awaitable completes
co_yieldProduce a value and suspend a generator coroutine
co_returnReturn a final value and end a coroutine
std::source_locationCompile-time capture of file, line, and function name
std::endianQuery the platform's byte order at compile time
[[likely]] / [[unlikely]]Hint the compiler about branch prediction
[[no_unique_address]]Allow empty member to share storage with neighbors
Conditional explicit (explicit(bool))Make a constructor conditionally explicit
Non-type template parameters of class typeUse class objects as template arguments
Destroying deleteCustomize destruction inside operator delete
Feature test macrosPreprocessor macros to detect supported features
Aggregate initialization improvementsParenthesized initialization of aggregates

STL ​

Containers ​

ContainerDescription
std::spanNon-owning view over a contiguous sequence

Concepts Library ​

ConceptDescription
std::same_asTwo types are identical
std::derived_fromOne type publicly derives from another
std::convertible_toImplicit and explicit conversion exists
std::integralType is an integer type
std::floating_pointType is a floating-point type
std::signed_integral / std::unsigned_integralSigned/unsigned integer type
std::common_reference_withTwo types share a common reference type
std::common_withTwo types share a common type
std::assignable_fromOne type is assignable from another
std::swappableType supports swap
std::destructibleType has a valid destructor
std::constructible_fromType is constructible from given args
std::default_initializableType supports default construction
std::move_constructibleType supports move construction
std::copy_constructibleType supports copy construction
std::equality_comparableType supports == comparison
std::totally_orderedType supports all relational operators
std::regularCopyable + default-constructible + equality-comparable
std::semiregularCopyable + default-constructible
std::invocableType can be called with given arguments
std::predicateInvocable returning a boolean
std::relationBinary predicate defining a relation
Ranges Library (19)
ComponentDescription
std::ranges::rangeType providing begin() and end()
std::ranges::input_rangeRange for single-pass input iteration
std::ranges::output_rangeRange for output iteration
std::ranges::forward_rangeRange for multi-pass forward iteration
std::ranges::bidirectional_rangeRange for bidirectional iteration
std::ranges::random_access_rangeRange for constant-time jumps
std::ranges::contiguous_rangeRange with contiguous storage
std::ranges::sized_rangeRange with O(1) size query
std::ranges::viewLightweight, non-owning range with O(1) copy
std::ranges::viewable_rangeRange convertible to a view
std::ranges::borrowed_rangeRange safe to use after the source is destroyed
std::ranges::common_rangeRange where begin/end return the same type
std::ranges::range_value_t / range_reference_tType aliases for range element types
std::ranges::range_difference_t / range_size_tType aliases for range distance/size
std::ranges::begin / endCustomization point objects for range access
std::ranges::cbegin / cendConst range access
std::ranges::rbegin / rendReverse range access
std::ranges::size / ssizeRange size queries
std::ranges::empty / data / cdataRange emptiness and data pointer queries
Range Views (19)
ViewDescription
all_view / ref_view / owning_viewWrap a range into a view
filter_viewLazily filter elements by a predicate
transform_viewLazily apply a function to each element
take_viewTake the first N elements
take_while_viewTake elements while predicate holds
drop_viewSkip the first N elements
drop_while_viewSkip elements while predicate holds
join_viewFlatten nested ranges into one
split_viewSplit a range by a delimiter
counted_viewView of N elements from an iterator
common_viewAdapt to common begin/end types
reverse_viewView a range in reverse
elements_viewProject the Nth element of tuple-like elements
keys_view / values_viewProject keys/values from pair-like ranges
iota_viewGenerate an incrementing sequence
empty_viewEmpty range of a given type
single_viewRange containing exactly one element
Range Adaptors (17)
Adaptor (std::views::)Description
allView the entire range
filterPipe-syntax filtering
transformPipe-syntax transformation
take / take_whilePipe-syntax take operations
drop / drop_whilePipe-syntax drop operations
joinPipe-syntax flattening
splitPipe-syntax splitting
commonPipe-syntax common range conversion
reversePipe-syntax reverse
elements / keys / valuesPipe-syntax tuple projection
iotaPipe-syntax sequence generation
empty / singlePipe-syntax range factories
Range Algorithms (72)

All classic algorithms reimplemented for ranges with projection support:

AlgorithmPurpose
std::ranges::for_each / for_each_nApply function to elements
std::ranges::find / find_if / find_if_notFind elements by value or predicate
std::ranges::find_end / find_first_ofFind subsequences or candidates
std::ranges::adjacent_findFind adjacent equal elements
std::ranges::count / count_ifCount elements
std::ranges::mismatch / equalCompare ranges
std::ranges::search / search_nSearch for patterns
std::ranges::copy / copy_if / copy_n / copy_backwardCopy elements
std::ranges::move / move_backwardMove elements
std::ranges::fill / fill_nFill with values
std::ranges::transformTransform elements
std::ranges::generate / generate_nGenerate values
std::ranges::remove / remove_ifRemove elements
std::ranges::replace / replace_ifReplace elements
std::ranges::swap_rangesSwap range contents
std::ranges::reverse / reverse_copyReverse elements
std::ranges::rotate / rotate_copyRotate elements
std::ranges::unique / unique_copyRemove consecutive duplicates
std::ranges::partition / stable_partitionPartition by predicate
std::ranges::sort / stable_sortSort elements
std::ranges::partial_sort / partial_sort_copyPartial sorting
std::ranges::nth_elementPlace Nth element correctly
std::ranges::merge / inplace_mergeMerge sorted ranges
std::ranges::includesSorted range inclusion
std::ranges::set_union / set_intersectionSet operations
std::ranges::set_difference / set_symmetric_differenceSet difference operations
std::ranges::push_heap / pop_heap / make_heap / sort_heapHeap operations
std::ranges::min / max / minmaxMin/max of values
std::ranges::min_element / max_element / minmax_elementMin/max of ranges
std::ranges::lexicographical_compareLexicographic comparison
std::ranges::next_permutation / prev_permutationPermutation generation
std::ranges::all_of / any_of / none_ofPredicate quantifiers
std::ranges::is_sorted / is_sorted_untilSort verification
std::ranges::is_permutationPermutation check
std::ranges::is_heap / is_heap_untilHeap verification

Utilities ​

UtilityDescription
std::bit_castReinterpret object representation as a different type
std::starts_with / std::ends_withCheck string/container prefix or suffix
std::containsCheck if a container holds a value
std::erase / std::erase_ifUniform container erasure
std::formatPython-style type-safe string formatting
std::format_to / format_to_n / formatted_sizeFormat into iterators or compute size
std::vformat / std::make_format_argsRuntime format string support
std::syncbuf / std::osyncstreamSynchronized output preventing interleaved writes
std::bind_frontBind leading arguments to a callable
std::identityFunction object that returns its argument unchanged
std::unwrap_reference / std::unwrap_ref_decayUnwrap reference wrappers
std::midpointCompute midpoint without overflow
std::lerpLinear interpolation between two values
std::to_addressObtain raw pointer from a pointer-like type
std::assume_alignedAssert pointer alignment for optimization
std::make_shared_for_overwriteAllocate shared_ptr with default initialization
std::make_unique_for_overwriteAllocate unique_ptr with default initialization
Mathematical Constants (12)
ConstantValue
std::numbers::pi3.14159... (ratio of circumference to diameter)
std::numbers::e2.71828... (Euler's number)
std::numbers::sqrt21.41421... (square root of 2)
std::numbers::sqrt31.73205... (square root of 3)
std::numbers::ln20.69314... (natural log of 2)
std::numbers::ln102.30258... (natural log of 10)
std::numbers::log2e1.44269... (log base 2 of e)
std::numbers::log10e0.43429... (log base 10 of e)
std::numbers::phi1.61803... (golden ratio)
std::numbers::inv_pi0.31830... (1/pi)
std::numbers::inv_sqrtpi0.56418... (1/sqrt(pi))
std::numbers::egamma0.57721... (Euler-Mascheroni constant)
Chrono Extensions (25)
ComponentDescription
std::chrono::dayCalendar day (1-31)
std::chrono::monthCalendar month (January-December)
std::chrono::yearCalendar year
std::chrono::weekdayDay of the week
std::chrono::weekday_indexedNth weekday in a month (e.g., 2nd Tuesday)
std::chrono::weekday_lastLast weekday in a month
std::chrono::month_day / month_day_lastMonth + day combinations
std::chrono::month_weekday / month_weekday_lastMonth + weekday combinations
std::chrono::year_monthYear + month combination
std::chrono::year_month_dayFull calendar date
std::chrono::year_month_day_lastLast day of a year/month
std::chrono::year_month_weekdayYear + month + weekday
std::chrono::year_month_weekday_lastYear + month + last weekday
std::chrono::local_timeLocal time representation
std::chrono::zoned_timeTime point with associated time zone
std::chrono::time_zoneIANA time zone representation
std::chrono::sys_timeSystem clock time point alias
std::chrono::utc_clockUTC clock accounting for leap seconds
std::chrono::tai_clockInternational Atomic Time clock
std::chrono::gps_clockGPS time clock
std::chrono::file_clockClock for file timestamps
std::chrono::local_days / local_secondsLocal time convenience aliases
Bit Operations (11)
FunctionDescription
std::bit_ceilSmallest power of two not less than value
std::bit_floorLargest power of two not greater than value
std::bit_widthNumber of bits needed to represent a value
std::countl_zeroCount leading zero bits
std::countl_oneCount leading one bits
std::countr_zeroCount trailing zero bits
std::countr_oneCount trailing one bits
std::has_single_bitCheck if value is a power of two
std::popcountCount the number of set bits
std::rotlBitwise rotate left
std::rotrBitwise rotate right

Threading ​

ComponentDescription
std::jthreadThread with automatic joining and stop-token support
std::stop_tokenQuery whether a stop has been requested
std::stop_sourceRequest a cooperative stop on associated threads
std::latchSingle-use thread barrier that counts down
std::barrierReusable thread synchronization barrier
std::semaphore / std::counting_semaphoreSemaphore for limiting concurrent access
std::atomic_refAtomic operations on a non-atomic object
std::atomic_flag enhancementsAdditional atomic flag operations
std::atomic_wait / notify_one / notify_allEfficient atomic waiting and notification

C++23 — Completing Modern C++ ​

13 core language features · 76 STL additions | Core Language · STL

Polished C++20's additions and filled critical gaps: std::expected, std::print, deducing this, std::flat_map, and many new range views.

Core Language ​

ConceptDescription
Deducing thisExplicit object parameter enables value-category overloading
Explicit this parameter in lambdasLambdas can take an explicit object parameter
[[assume]] attributeAssert a condition for optimizer without runtime check
Multidimensional subscript operatoroperator[] can accept multiple arguments
Static operator()Call operator can be declared static
Static operator[]Subscript operator can be declared static
if constevalBranch on whether code is being constant-evaluated
size_t literal suffix (uz/zu)Write std::size_t literals directly
#warning directiveIssue a compiler warning from preprocessor
#elifdef / #elifndef directivesShorthand for #elif defined(...)
auto(x) / auto{x} decay-copyExplicitly decay-copy an expression
constexpr improvementsMore operations allowed in constant expressions
Lambda trailing return type scope changesName lookup in lambda trailing return type fixed

STL ​

Containers ​

ContainerDescription
std::flat_mapSorted key-value container backed by contiguous storage
std::flat_setSorted unique container backed by contiguous storage
std::flat_multimapFlat map allowing duplicate keys
std::flat_multisetFlat set allowing duplicate elements
std::mdspanMulti-dimensional non-owning view over contiguous data
std::generatorCoroutine-based synchronous element generator
Range Views (14)
ViewDescription
zip_viewIterate over multiple ranges in lockstep
zip_transform_viewZip ranges and apply a transformation
adjacent_viewSliding window of N adjacent elements
adjacent_transform_viewAdjacent window with transformation
chunk_viewSplit a range into fixed-size chunks
chunk_by_viewSplit range where predicate changes
slide_viewSliding window over consecutive elements
stride_viewTake every Nth element from a range
cartesian_product_viewCartesian product of multiple ranges
repeat_viewInfinite or bounded repetition of a value
join_with_viewFlatten with a delimiter between ranges
as_rvalue_viewCast all elements to rvalues
as_const_viewCast all elements to const
enumerate_viewPair each element with its index
Range Adaptors (14)
Adaptor (std::views::)Description
zip / zip_transformPipe-syntax zip operations
adjacent / adjacent_transformPipe-syntax adjacent operations
chunk / chunk_byPipe-syntax chunking
slidePipe-syntax sliding window
stridePipe-syntax striding
cartesian_productPipe-syntax cartesian product
repeatPipe-syntax repetition
join_withPipe-syntax join with delimiter
as_rvalue / as_constPipe-syntax value category conversion
enumeratePipe-syntax enumeration
Range Algorithms (11)
AlgorithmPurpose
std::ranges::fold_leftLeft fold (like accumulate for ranges)
std::ranges::fold_rightRight fold over a range
std::ranges::fold_left_firstLeft fold using first element as initial value
std::ranges::fold_right_lastRight fold using last element as initial value
std::ranges::find_last / find_last_if / find_last_if_notFind from the end of a range
std::ranges::containsCheck if a range contains a value
std::ranges::starts_with / ends_withCheck range prefix/suffix
std::ranges::toMaterialize a range into a container

Utilities ​

UtilityDescription
std::expectedValue-or-error return type (alternative to exceptions)
std::print / std::printlnFormatted output without streams overhead
std::stacktrace / std::stacktrace_entry / std::basic_stacktraceCapture the current call stack at runtime
std::to_underlyingConvert enum to its underlying integer type
std::byteswapReverse byte order of an integer value
std::unreachableHint that a code path is never reached
std::invoke_rInvoke a callable and convert result to a type
std::forward_likeForward with the value category of another type
std::move_only_functionType-erased callable that is move-only
std::out_ptr / std::inout_ptrAdaptors for C APIs that output pointers
std::spanstreamStream backed by a std::span buffer
std::basic_string::contains / std::basic_string_view::containsCheck if a string contains a substring
Container Improvements (7)
ImprovementDescription
std::string constexpr supportString operations usable at compile time
std::vector constexpr supportVector operations usable at compile time
std::optional monadic operationsand_then, transform, or_else chaining
std::variant monadic operationsMonadic-style variant processing
std::expected monadic operationsand_then, transform, or_else chaining
std::span subspan / as_bytes / as_writable_bytesSpan slicing and byte-level access
std::reference_wrapper improvementsEnhanced reference wrapper functionality
Chrono Improvements (5)
ComponentDescription
std::chrono::parseParse a time point from a string
std::chrono::formatFormat a time point to a string
std::chrono::zoned_traitsCustomization point for zoned_time behavior
std::chrono::chooseDisambiguation policy for ambiguous local times
std::chrono::leap_secondLeap second information entry

Modules ​

ComponentDescription
import stdImport the entire standard library as a single module

C++26 — The Next Frontier ​

11 core language features · 33 STL additions | Core Language · STL

The upcoming standard bringing contracts, static reflection, SIMD support, and the senders/receivers execution framework.

Core Language ​

ConceptDescription
Contracts (preconditions, postconditions, assertions)Formalized function contract specifications
Reflection (P2996, static reflection)Inspect types, members, and attributes at compile time
std::metaCompile-time metaprogramming primitives for reflection
Pack indexingAccess the Nth element of a parameter pack directly
Placeholder variables (_)Discard unused bindings with multiple _ declarations
Structured bindings as conditionsUse structured bindings directly in if/while
constexpr cast from void*Allow static_cast from void* in constant expressions
Erroneous behavior for uninitialized readsFormally define behavior of reading uninitialized variables
User-generated static_assert messagesstatic_assert with computed string messages
Extended floating-point types (float16_t, etc.)Standardized fixed-width floating-point types
Pattern matching (proposed)Declarative value inspection and decomposition

STL ​

Containers ​

ContainerDescription
std::inplace_vectorFixed-capacity vector with no heap allocation
std::mdspan improvementsEnhanced dynamic extent support
std::flat_map / std::flat_set improvementsPerformance and API refinements

Utilities ​

UtilityDescription
std::text_encodingQuery and represent character encoding information
std::format improvementsRange formatting and additional format specifiers
std::print improvementsEnhanced formatted output
std::copyable_functionCopyable type-erased callable wrapper
std::function_refNon-owning lightweight callable reference

Saturation Arithmetic ​

FunctionDescription
std::add_sat / std::sub_satAddition/subtraction clamped on overflow
std::mul_sat / std::div_satMultiplication/division clamped on overflow
std::saturate_castNumeric cast that saturates at target type limits

Compile-Time Utilities ​

ComponentDescription
std::is_within_lifetimeCheck if an object is within its lifetime at compile time

Container Improvements ​

ComponentDescription
std::string_view improvementsEnhanced string view functionality
std::u8string_viewUTF-8 string view type
std::u8string improvementsEnhanced UTF-8 string functionality

SIMD Support ​

ComponentDescription
std::simdPortable data-parallel vector type
std::simd_maskBoolean mask for conditional SIMD operations
std::simd::reduceReduce SIMD vector to a scalar value
Execution Framework (10)
ComponentDescription
std::execution (senders/receivers)Structured async programming framework
std::execution::schedulerAbstract source of execution contexts
std::execution::senderDescribe an asynchronous operation
std::execution::receiverConsume the result of a sender
std::execution::thenChain a continuation after a sender completes
std::execution::when_allWait for multiple senders to complete
std::execution::let_valueDynamically compose senders based on results
std::execution::bulkExecute work in bulk (data parallelism)
std::execution::splitShare a sender's result with multiple consumers
std::execution::ensure_startedEagerly start a sender's execution

Threading ​

ComponentDescription
std::hazard_pointerSafe memory reclamation for lock-free data structures
std::rcu (reader-copy-update)Efficient concurrent reads with deferred reclamation

This index covers 968 concepts across 8 C++ standards (1998–2026).For full explanations, real-world scenarios, and code examples — visit the per-standard documents linked in each section.

Back to CodeNebula README

Released under the MIT License.