Overview
ISO/IEC TS 19568:2017 - Programming languages - C++ extensions for library fundamentals is a Technical Specification (second edition, 2017) that documents a set of non‑normative extensions to the C++ Standard Library. Its goal is to describe widely useful classes and functions (many published under headers) that library authors, compiler vendors and application developers commonly use at program and interface boundaries. The TS provides guidance for implementers who want to provide these extensions and builds broader practice for a possible future inclusion in the official C++ standard.
Key Topics
The specification groups extensions across core library areas. Key technical topics and components include:
- Utility and type support
- experimental/utility, erased_type, tuple utilities and calling a function with a tuple of arguments
- metaprogramming and type_traits, detection idiom and logical operator traits
- Function objects and searchers
- experimental/functional, class template function, not_fn
- searchers (default_searcher, boyer_moore_searcher, boyer_moore_horspool_searcher)
- Optional, any, and string views
- experimental/optional (optional, bad_optional_access)
- experimental/any (any, bad_any_cast)
- experimental/string_view (basic_string_view)
- Memory and allocators
- experimental/memory, shared/weak pointers
- memory_resource, polymorphic_allocator, type‑erased allocator and pool resources (synchronized and unsynchronized)
- Utilities for time, ratio, and errors
- experimental/chrono (time utilities), experimental/ratio (compile‑time rational arithmetic)
- experimental/system_error
- Const propagation and safety
- class template propagate_const and related requirements
- Additional topics: feature‑testing recommendations, namespaces, headers and modifications to standard classes
Applications
ISO/IEC TS 19568:2017 is practical for:
- Library implementers and compiler vendors seeking to ship experimental C++ library extensions consistently
- Library authors who design API boundaries requiring type erasure, polymorphic allocators, optional/any semantics, or efficient string views
- Application developers needing guidance on adopting experimental components (optional, any, string_view, memory_resource) for performance and interoperability
- Teams focused on performance, memory management, and cross‑library ABI safety will find the memory_resource and polymorphic_allocator sections particularly relevant
Related standards
- This TS complements the C++ standard family (ISO/IEC JTC1/SC22/WG21 work). It is non‑normative; components may be proposed for future standardization or remain as vendor extensions. For formal normative requirements consult the current ISO C++ standard and subsequent revisions.
Keywords: ISO/IEC TS 19568:2017, C++ standard library extensions, experimental headers, optional, any, string_view, memory_resource, polymorphic_allocator, propagate_const, C++ libraries.