Experimental C++ Features

Curated hub for Technical Specifications and experimental C++ facilities: status, domain clusters, and migration paths toward standardized library areas.

The experimental C++ area collects facilities that appeared in Library Fundamentals TSes, Concurrency TSes, Filesystem TSes, Ranges TSes, Networking proposals, and other incubation tracks before or instead of standardization in the main C++ standard library.

Treat this hub as a status and migration map, not as a recommendation to start new code on experimental APIs by default. Many of these facilities later moved into standardized C++ areas such as filesystem, ranges, utility, thread support, and memory.

# Start Here

Library Fundamentals and vocabulary types

Use this route for facilities that incubated common modern library building blocks before their standardized forms stabilized.

Memory resource and ownership experiments

Polymorphic memory resources, pool resources, and ownership-adjacent helper types that informed later standardized memory facilities.

Concurrency and futures experiments

Use this route for Concurrency TS features, continuation-style futures, barriers, latches, and atomic smart pointer experiments.

Filesystem and networking

Use this route for larger domain TSes that eventually fed standard filesystem and still-not-yet-mainline networking work.

Ranges and execution incubation

Historical TS surfaces that predate the standardized ranges model or execution-related standardization.

Reflection and other incubators

Use this route for proposal-heavy or still-emerging tracks that are useful mainly for status awareness and historical context.

# Status Map

Experimental areaWhat it containsTypical migration target
Library FundamentalsVocabulary types, helpers, memory-resource work, observer/ownership utilities, and scope-guard style tools.Utility, Memory, String
Concurrency TSContinuation-friendly futures, latch/barrier family, and smart-pointer atomics that informed later standard APIs.Thread support, Atomic operations
Filesystem TSPre-standard filesystem paths, directory traversal, file status, and related error types.Filesystem
Ranges TSHistorical experimental ranges taxonomy that predates the standardized C++20 ranges model.Ranges
Networking / reflection / other incubatorsProposal-driven areas that may still be experimental or evolve independently from the main standard library surface.Track the experimental pages directly first; only jump to a standardized hub if one now exists.

# Domain Clusters

ClusterKey pagesUse it for
Vocabulary and value wrappersoptional, any, basic_string_view, functionHistorical TS forms of value wrappers and callable wrappers that later influenced standardized utility surfaces.
Memory resource ecosystemmemory_resource, monotonic_buffer_resource, polymorphic_allocator, synchronized_pool_resource, unsynchronized_pool_resourceAllocator and PMR-adjacent experiments that led toward modern resource-oriented memory management.
Ownership and scope helpersobserver_ptr, propagate_const, unique_resource, scope_exit, scope_fail, scope_successNon-owning pointers, const-propagation wrappers, and RAII-style cleanup helpers.
Concurrency and continuationsconcurrency, future, latch, barrier, flex_barrier, atomic_shared_ptr, atomic_weak_ptrSynchronization, continuation-based async workflows, and experimental concurrent ownership primitives.
Filesystem, networking, and system-adjacent domainsfs, networkingBroader domain TSes that either standardized later or remain incubating separately.
Execution, ranges, and parallelismexecution, parallelism, ranges, ostream_joinerPre-standard models for algorithms, execution policy work, range composition, and related utilities.
Metaprogramming and reflection incubatorsis_detected, not_fn, reflect, source_locationDetection idiom helpers, callable adapters, reflection work, and proposal-stage compile-time support.
Early numeric and algorithm extrasgcd, lcm, simd, special functionsExperimental numerics that later moved into or influenced standard numeric facilities.

# Migration Notes

If you find an experimental page for...Check first whether you should now prefer...
`fs`, path, directory traversal, file statusstandard filesystem
`optional`, `any`, `string_view`, `not_fn`, `source_location`utility and related standardized library pages
`memory_resource`, PMR allocators and pool resourcesmemory and standardized PMR facilities
experimental ranges taxonomystandard ranges
concurrency primitives such as latch/barrierthread support and atomic operations
facilities with no obvious standardized counterpart yetStay in the experimental page and verify your toolchain/library support before adopting them.

# Boundary Notes

Prefer standardized hubs when they exist

This page should often be your status map, not your final destination. If a facility has a modern standard counterpart, that counterpart is usually the better primary reference.

Check implementation support

Experimental facilities are more likely to vary by library vendor, compiler mode, and TS availability than standardized facilities.

C experimental

Keep the C experimental area separate; this hub is specifically for C++ TS and experimental-library surfaces.