|
lucenaBAL 3.0.0
Lucena Build Abstraction Library for C++
|
Provides feature detection describing the capabilities of the Standard Library implementation. More...

LBAL_LIBCPP14 | |
C++14 features described here track the corresponding SD-6 macros, which are not as comprehensive as those for more recent Standards. More C++14 Library features can be tracked as needed. | |
| #define | LBAL_LIBCPP14_CHRONO_UDLS |
| User-defined Literals for <chrono> types. | |
| #define | LBAL_LIBCPP14_COMPLEX_UDLS |
| User-defined Literals for <complex>. | |
| #define | LBAL_LIBCPP14_EXCHANGE_FUNCTION |
| Add std::exchange utility function. | |
| #define | LBAL_LIBCPP14_GENERIC_ASSOCIATIVE_LOOKUP |
| Add heterogeneous comparison lookup to associative containers. | |
| #define | LBAL_LIBCPP14_INTEGER_SEQUENCE |
| Add template-based integer sequences. | |
| #define | LBAL_LIBCPP14_INTEGRAL_CONSTANT_CALLABLE |
| Add constexpr operator-() to std::integral_constant. | |
| #define | LBAL_LIBCPP14_IS_FINAL |
| Detect finalized classes. | |
| #define | LBAL_LIBCPP14_IS_NULL_POINTER |
| Detect null pointers. | |
| #define | LBAL_LIBCPP14_MAKE_REVERSE_ITERATOR |
| std::make_reverse_iterator | |
| #define | LBAL_LIBCPP14_MAKE_UNIQUE |
| std::make_unique | |
| #define | LBAL_LIBCPP14_NULL_ITERATORS |
| Allow value-initialized forward iterators to be compared. | |
| #define | LBAL_LIBCPP14_QUOTED_STRING_IO |
| Add quoted-string sream i/o manipulator. | |
| #define | LBAL_LIBCPP14_RESULT_OF_SFINAE |
| Make std::result_of SFINAE-friendly. | |
| #define | LBAL_LIBCPP14_ROBUST_NONMODIFYING_SEQ_OPS |
| Make non-modifying sequence operations more robust. | |
| #define | LBAL_LIBCPP14_SHARED_TIMED_MUTEX |
| Rename std::shared_mutex to std::shared_timed_mutex. | |
| #define | LBAL_LIBCPP14_STRING_UDLS |
| Predefine UDLs for strings. | |
| #define | LBAL_LIBCPP14_TRANSFORMATION_TRAIT_ALIASES |
| Provide type aliases for transformation traits. | |
| #define | LBAL_LIBCPP14_TRANSPARENT_OPERATORS |
| Allow heterogeneous arguments to operator functors and template their function call operators. | |
| #define | LBAL_LIBCPP14_TUPLES_BY_TYPE |
| Allow addressing std::tuples by type. | |
| #define | LBAL_LIBCPP14_TUPLE_ELEMENT_T |
| Add std::tuple element_t type alias. | |
LBAL_LIBCPP17 | |
A large number of C++17 Standard Library features are not available in the implementations bundled with otherwise-conforming C++17 compilers. Additionally, sometimes support is simply broken or has surprising limitations, presenting further challenges. Here we track and document all such situations we’re aware of. | |
| #define | LBAL_LIBCPP17_ADDRESSOF_CONSTEXPR |
| Make std::addressof constexpr, as per defect report. | |
| #define | LBAL_LIBCPP17_ALLOCATOR_TRAITS_IS_ALWAYS_EQUAL |
| Clean up noexcept usage (Rev 3). | |
| #define | LBAL_LIBCPP17_ANY |
| <any> components from Library Fundamentals V1 TS | |
| #define | LBAL_LIBCPP17_ANY_INTERFACE |
| Impose homogeneous interface for std::variant, std::any and std::optional (Rev 3). | |
| #define | LBAL_LIBCPP17_APPLY |
| std::apply component from Library Fundamentals V1 TS | |
| #define | LBAL_LIBCPP17_ARRAY_CONSTEXPR |
| Add constexpr modifiers to std::reverse_iterator, std::move_iterator, <array> and Range Access types. | |
| #define | LBAL_LIBCPP17_AS_CONST |
| Add std::as_const helper function template. | |
| #define | LBAL_LIBCPP17_ATOMIC_IS_ALWAYS_LOCK_FREE |
| Add constexpr atomic<T>::is_always_lock_free. | |
| #define | LBAL_LIBCPP17_BOOL_CONSTANT |
| Introduce std::bool_constant. | |
| #define | LBAL_LIBCPP17_BOYER_MOORE_SEARCHER |
| Add text search components from Library Fundamentals V1 TS. | |
| #define | LBAL_LIBCPP17_BYTE |
| Define std::byte type. | |
| #define | LBAL_LIBCPP17_CHRONO |
| Rounding and abs fixes for <chrono>. | |
| #define | LBAL_LIBCPP17_CHRONO_CONSTEXPR |
| Add constexpr to certain <chrono> functions. | |
| #define | LBAL_LIBCPP17_CLAMP |
| Standard clamping algorithm. | |
| #define | LBAL_LIBCPP17_CONSTEXPR_STRING |
| Make std::char_traits constexpr. | |
| #define | LBAL_LIBCPP17_CONSTEXPR_STRING_VIEW |
| Make std::char_traits constexpr. | |
| #define | LBAL_LIBCPP17_DEDUCTION_GUIDES |
| Toward a resolution of US7 and US14: Integrating template deduction for class templates into the standard library. | |
| #define | LBAL_LIBCPP17_ENABLE_SHARED_FROM_THIS |
| Re-enable std::shared_from_this. | |
| #define | LBAL_LIBCPP17_EXECUTION |
| Add Library components of the Parallelism TS. | |
| #define | LBAL_LIBCPP17_FILESYSTEM |
| Adopt File System TS. | |
| #define | LBAL_LIBCPP17_FILESYSTEM_DIRECTORY_ENTRY_CACHING |
| Add directory entry caching to <filesystem>. | |
| #define | LBAL_LIBCPP17_FILESYSTEM_EXP |
| Experimental implementation of the Filesystem TS. | |
| #define | LBAL_LIBCPP17_FILESYSTEM_PATHS_EXPANDED |
| Add relative path and std::string_view support to <filesystem>. | |
| #define | LBAL_LIBCPP17_FILESYSTEM_RELATIVE_PATHS |
| Relative Paths for Filesystem. | |
| #define | LBAL_LIBCPP17_GCD_LCM |
| Add std::gcd and std::lcm. | |
| #define | LBAL_LIBCPP17_HARDWARE_INTERFERENCE_SIZE |
| Provide relevant cache line sizes for construction and destruction. | |
| #define | LBAL_LIBCPP17_HAS_UNIQUE_OBJECT_REPRESENTATIONS |
| Add std::has_unique_object_representations. | |
| #define | LBAL_LIBCPP17_HYPOT |
| Introduce a 3-argument overload to std::hypot. | |
| #define | LBAL_LIBCPP17_INCOMPLETE_CONTAINER_ELEMENTS |
| Introduce minimal incomplete type support for Standard containers. | |
| #define | LBAL_LIBCPP17_INVOKE |
| Add std::invoke function template. | |
| #define | LBAL_LIBCPP17_IS_AGGREGATE |
| Add std::is_aggregate type trait. | |
| #define | LBAL_LIBCPP17_IS_INVOCABLE |
| Add std::is_invocable type trait to replace is_callable. | |
| #define | LBAL_LIBCPP17_IS_SWAPPABLE |
| Add std::is_swappable type trait family. | |
| #define | LBAL_LIBCPP17_LAUNDER |
| Replacement of class objects containing reference members. | |
| #define | LBAL_LIBCPP17_LOGICAL_TRAITS |
| Provide type traits for performing logical operations. | |
| #define | LBAL_LIBCPP17_MAKE_FROM_TUPLE |
| Introduce std::make_from_tuple to unpack a tuple into arguments. | |
| #define | LBAL_LIBCPP17_MAP_TRY_EMPLACE |
| Improve insertion into std::map. | |
| #define | LBAL_LIBCPP17_MATH_SPECIAL_FUNCTIONS |
| Incorporate math functions specified in IS 29124:2010. | |
| #define | LBAL_LIBCPP17_MEMORY_RESOURCE |
| Incorporate memory management components from Library Fundamentals V1 TS. | |
| #define | LBAL_LIBCPP17_NODE_EXTRACT |
| Add splicing to associative containers. | |
| #define | LBAL_LIBCPP17_NONMEMBER_CONTAINER_ACCESS |
| Incorporate non-member functions into Standard container class interfaces. | |
| #define | LBAL_LIBCPP17_NOT_FN |
| Add std::not_fn. | |
| #define | LBAL_LIBCPP17_OPTIONAL |
| Add std::optional. | |
| #define | LBAL_LIBCPP17_OPTIONAL_GREATER_EQUAL |
| Homogenize std::optional interface with std::any and std::variant. | |
| #define | LBAL_LIBCPP17_OPTIONAL_INTERFACE |
| Homogenize std::optional interface with std::any and std::variant. | |
| #define | LBAL_LIBCPP17_PARALLEL_ALGORITHM |
| Standardize the Parallelism TS. | |
| #define | LBAL_LIBCPP17_RAW_MEMORY_ALGORITHMS |
| Supply tools for raw memory management. | |
| #define | LBAL_LIBCPP17_SAMPLE |
| Adopt std::sample from the Library Fundamentals V1 TS. | |
| #define | LBAL_LIBCPP17_SCOPED_LOCK |
| Add a variadic variant of std::lock_guard under a new name. | |
| #define | LBAL_LIBCPP17_SHARED_MUTEX |
| Officially change std::shared_mutex to an untimed mutex. | |
| #define | LBAL_LIBCPP17_SHARED_PTR_ARRAYS |
| Fix std::shared_ptr support for arrays. | |
| #define | LBAL_LIBCPP17_SHARED_PTR_WEAK_TYPE |
| Add shared_ptr::weak_type. | |
| #define | LBAL_LIBCPP17_STANDARDIZATION_OF_PARALLELISM_TS |
| Track full compliance with the Parallelism Standard. | |
| #define | LBAL_LIBCPP17_STRING_VIEW |
| Adopt std::string_view from the Library Fundamentals V1 TS. | |
| #define | LBAL_LIBCPP17_STRING_VIEW_INTERFACE |
| Address interface inversion between <string> and <string_view>. | |
| #define | LBAL_LIBCPP17_TO_CHARS |
| Elementary string conversions, revision 5. | |
| #define | LBAL_LIBCPP17_TO_CHARS_FP |
| Floating-point compliance with Elementary string conversions. | |
| #define | LBAL_LIBCPP17_TO_CHARS_INTEGER |
| Integer compliance with Elementary string conversions. | |
| #define | LBAL_LIBCPP17_TRANSPARENT_OPERATORS |
| Make std::owner_less more flexible. | |
| #define | LBAL_LIBCPP17_TYPE_TRAIT_VARIABLE_TEMPLATES |
| Adopt variable templates for type traits from the Library Fundamentals V1 TS. | |
| #define | LBAL_LIBCPP17_UNCAUGHT_EXCEPTIONS |
| Add std::uncaught_exceptions. | |
| #define | LBAL_LIBCPP17_UNORDERED_MAP_TRY_EMPLACE |
| Improve insertion into std::unordered_map. | |
| #define | LBAL_LIBCPP17_VARIANT |
| Add std::variant. | |
| #define | LBAL_LIBCPP17_VOID_T |
| Add std::void_t as a transformation type trait. | |
LBAL_LIBCPP20 | |
These are all taken from features that have been incorporated into the C++20 Standard. | |
| #define | LBAL_LIBCPP20_ARRAY_CONSTEXPR_COMPARISONS |
| Provide constexpr comparison operators for std::array. | |
| #define | LBAL_LIBCPP20_ARRAY_CONSTEXPR_ITERATOR |
| Define requirements for constexpr iterators. | |
| #define | LBAL_LIBCPP20_ARRAY_CONSTEXPR_UTILITIES |
| Provide constexpr std::array swap and fill. | |
| #define | LBAL_LIBCPP20_ASSUME_ALIGNED |
| Provide std::assume_aligned compiler hint utility function Library. | |
| #define | LBAL_LIBCPP20_ATOMIC_FLAG_TEST |
| Add atomic_flag::test components of the C++20 Synchronization Library. | |
| #define | LBAL_LIBCPP20_ATOMIC_FLOAT |
| Extend <atomic> support to floating point types. | |
| #define | LBAL_LIBCPP20_ATOMIC_LOCK_FREE_TYPE_ALIASES |
| Add atomic lockfree type aliases from the C++20 Synchronization. | |
| #define | LBAL_LIBCPP20_ATOMIC_REF |
| Allow atomic operations to apply to non-atomic objects. | |
| #define | LBAL_LIBCPP20_ATOMIC_SHARED_PTR |
| Fixes for atomic std::shared_ptr and std::weak_ptr. | |
| #define | LBAL_LIBCPP20_ATOMIC_VALUE_INITIALIZATION |
| Eliminate the surprising value-initialization behavior of std::atomic. | |
| #define | LBAL_LIBCPP20_ATOMIC_WAIT |
| Add atomic wait components of the C++20 Synchronization Library. | |
| #define | LBAL_LIBCPP20_BARRIER |
| Add std::barrier components of the C++20 Synchronization Library. | |
| #define | LBAL_LIBCPP20_BIND_FRONT |
| Introduce std::bind_front to supersede std::bind. | |
| #define | LBAL_LIBCPP20_BIND_FRONT_NO_UNWRAP |
| Prevent std::bind_front from unwrapping std::reference_wrapper. | |
| #define | LBAL_LIBCPP20_BITOPS |
| Introduce support for hardware-level bit operations. | |
| #define | LBAL_LIBCPP20_BIT_CAST |
| Introduce robust casts between bit-compatible types. | |
| #define | LBAL_LIBCPP20_BOUNDED_ARRAY_TRAITS |
| Introduce traits to distinguish between bounded and unbounded arrays. | |
| #define | LBAL_LIBCPP20_CHAR8_T |
| Define char8_t as the base type for UTF-8 encodings (Rev 6). | |
| #define | LBAL_LIBCPP20_CHAR8_T_COMPAT |
| Fix backward compatibility issues introduced by char8_t. | |
| #define | LBAL_LIBCPP20_CHRONO_CALENDAR |
| Add support for Calendars and Time Zones to <chrono>. | |
| #define | LBAL_LIBCPP20_CHRONO_FIXES |
| Miscellaneous minor fixes for <chrono>. | |
| #define | LBAL_LIBCPP20_CONCEPTS |
| Standard Library Concepts. | |
| #define | LBAL_LIBCPP20_CONCEPTS_BOOLEAN_TESTABLE |
| Wording for boolean-testable. | |
| #define | LBAL_LIBCPP20_CONCEPTS_EXP |
| Experimental version of Standard Library Concepts. | |
| #define | LBAL_LIBCPP20_CONCEPTS_STANDARD_CASE |
| Rename C++ Concepts to use standard_case. | |
| #define | LBAL_LIBCPP20_CONSTEXPR_ALGORITHMS |
| Add constexpr to <algorithm> and <utility> functions. | |
| #define | LBAL_LIBCPP20_CONSTEXPR_ALGORITHMS_SWAP |
| Add constexpr to std::swap and related functions. | |
| #define | LBAL_LIBCPP20_CONSTEXPR_COMPLEX |
| Add more constexpr support to <complex>. | |
| #define | LBAL_LIBCPP20_CONSTEXPR_DYNAMIC_ALLOC |
| Add constexpr memory allocators used by dynamic containers. | |
| #define | LBAL_LIBCPP20_CONSTEXPR_FUNCTIONAL |
| Make more of <functional> constexpr. | |
| #define | LBAL_LIBCPP20_CONSTEXPR_FUNCTIONAL_INVOKE |
| Make std::invoke constexpr. | |
| #define | LBAL_LIBCPP20_CONSTEXPR_ITERATOR |
| Make more of <iterator> constexpr. | |
| #define | LBAL_LIBCPP20_CONSTEXPR_MEMORY |
| Make std::pointer_traits constexpr. | |
| #define | LBAL_LIBCPP20_CONSTEXPR_NUMERIC |
| Make numeric algorithms constexpr. | |
| #define | LBAL_LIBCPP20_CONSTEXPR_STRING |
| Make std::string constexpr. | |
| #define | LBAL_LIBCPP20_CONSTEXPR_STRING_PARTIAL |
| Make parts of std::string constexpr. | |
| #define | LBAL_LIBCPP20_CONSTEXPR_STRING_VIEW |
| Make more of <string_view> constexpr. | |
| #define | LBAL_LIBCPP20_CONSTEXPR_TUPLE |
| Make more of <tuple> constexpr. | |
| #define | LBAL_LIBCPP20_CONSTEXPR_UTILITY |
| Make more of <tuple> constexpr. | |
| #define | LBAL_LIBCPP20_CONSTEXPR_VECTOR |
| Make std::vector constexpr. | |
| #define | LBAL_LIBCPP20_COROUTINE |
| Standard Library coroutines. | |
| #define | LBAL_LIBCPP20_COROUTINE_EXP |
| Experimental Standard Library coroutines. | |
| #define | LBAL_LIBCPP20_DESTROYING_DELETE |
| Efficient sized delete for variable-sized classes. | |
| #define | LBAL_LIBCPP20_ENDIAN |
| Add std::endian enum. | |
| #define | LBAL_LIBCPP20_ENDIAN_BIT |
| Relocate std::endian to <bit>. | |
| #define | LBAL_LIBCPP20_ERASE_IF |
| Adopt consistent container erasure. | |
| #define | LBAL_LIBCPP20_ERASE_IF_FREE_FUNCTIONS |
| Update erase_if free function return types. | |
| #define | LBAL_LIBCPP20_EXECUTION_VECTORIZATION |
| Add target vectorization policies from the Parallelism V2 TS. | |
| #define | LBAL_LIBCPP20_FORMAT |
| Add text formatting functionality to properly replace printf. | |
| #define | LBAL_LIBCPP20_GENERIC_UNORDERED_HASH_LOOKUP |
| The feature was removed prior to Standardization. | |
| #define | LBAL_LIBCPP20_GENERIC_UNORDERED_LOOKUP |
| Heterogeneous lookup for unordered containers. | |
| #define | LBAL_LIBCPP20_INTEGER_COMPARISON_FUNCTIONS |
| Add Safe integral comparisons. | |
| #define | LBAL_LIBCPP20_INTERPOLATE |
| Add well-behaved interpolation for numbers and pointers. | |
| #define | LBAL_LIBCPP20_INT_POW2 |
| Integral power-of-2 operations. | |
| #define | LBAL_LIBCPP20_INT_POW2_FUNCTION_RENAME |
| Rename the assorted bit-manipulation fucntions. | |
| #define | LBAL_LIBCPP20_IS_CONSTANT_EVALUATED |
| Add std::is_constant_evaluated type trait. | |
| #define | LBAL_LIBCPP20_IS_LAYOUT_COMPATIBLE |
| Add std::is_layout_compatible type trait. | |
| #define | LBAL_LIBCPP20_IS_NOTHROW_CONVERTIBLE |
| Add std::is_nothrow_convertible type trait. | |
| #define | LBAL_LIBCPP20_IS_POINTER_INTERCONVERTIBLE |
| Add std::is_pointer_interconvertible type trait. | |
| #define | LBAL_LIBCPP20_JTHREAD |
| Add a cooperatively interruptible joining thread. | |
| #define | LBAL_LIBCPP20_JTHREAD_CV |
| Simplify condition variable API. | |
| #define | LBAL_LIBCPP20_LATCH |
| Incorporate std::latch from the C++20 Synchronization Library. | |
| #define | LBAL_LIBCPP20_LIST_REMOVE_RETURN_TYPE |
| Improve the return value of erase-like algorithms. | |
| #define | LBAL_LIBCPP20_MATH_CONSTANTS |
| Add common math constants to the C++ Standard. | |
| #define | LBAL_LIBCPP20_POLYMORPHIC_ALLOCATOR |
| Provide a default template argument for std::polymorphic_allocator. | |
| #define | LBAL_LIBCPP20_RANGES |
| Incorporate ranges into the C++ Standard. | |
| #define | LBAL_LIBCPP20_RANGES_INPUT_ADAPTORS |
| Add input range adaptors. | |
| #define | LBAL_LIBCPP20_RANGES_LOOSENED_COMPARE |
| Loosen the constraints on range-based compare algorithms. | |
| #define | LBAL_LIBCPP20_REMOVE_CVREF |
| Add std::remove_cvref type trait. | |
| #define | LBAL_LIBCPP20_SEMAPHORE |
| Incorporate std::semaphore from the C++20 Synchronization Library. | |
| #define | LBAL_LIBCPP20_SHARED_PTR_ARRAYS |
| Extend std::make_shared to support C-style arrays. | |
| #define | LBAL_LIBCPP20_SHIFT |
| Add std::shift_left and std::shift_right. | |
| #define | LBAL_LIBCPP20_SMART_PTR_FOR_OVERWRITE |
| Support smart pointer creation with default initialization. | |
| #define | LBAL_LIBCPP20_SOURCE_LOCATION |
| Adopt std::source_location from the Library Fundamentals V3 TS. | |
| #define | LBAL_LIBCPP20_SPAN |
| Add std::span. | |
| #define | LBAL_LIBCPP20_SPAN_FIXED_SIZE |
| Fix constructing a fixed-size std::span from a dynamic range. | |
| #define | LBAL_LIBCPP20_SPAN_USABILITY |
| Enhance usability for std::span. | |
| #define | LBAL_LIBCPP20_SSIZE |
| Add std::ssize and fix std::span’s size return values. | |
| #define | LBAL_LIBCPP20_STARTS_ENDS_WITH |
| Add string prefix- and suffix-checking. | |
| #define | LBAL_LIBCPP20_STRING_VIEW_CONSTEXPR_ITERATOR |
| Add support for constexpr iterators to <string_view>. | |
| #define | LBAL_LIBCPP20_SYNCBUF |
| Add synchronized buffered output streams. | |
| #define | LBAL_LIBCPP20_SYNCBUF_MANIPULATORS |
| Add manipulators for synchronized buffered output streams. | |
| #define | LBAL_LIBCPP20_THREE_WAY_COMPARISON |
| Add <compare> to the Standard Library. | |
| #define | LBAL_LIBCPP20_THREE_WAY_COMPARISON_LIBRARY |
| Add three-way comparison support to the Standard Library. | |
| #define | LBAL_LIBCPP20_TO_ADDRESS |
| Provide a utility to convert a pointer to a raw pointer. | |
| #define | LBAL_LIBCPP20_TO_ARRAY |
| Adopt std::to_array from the Library Fundamentals TS. | |
| #define | LBAL_LIBCPP20_TYPE_IDENTITY |
| Add the std::identity metafunction. | |
| #define | LBAL_LIBCPP20_UNWRAP_REF |
| Add std::unwrap_reference and std::unwrap_ref_decay. | |
| #define | LBAL_LIBCPP20_VERSION |
| Identifies whether <version> is present and include-able given the current C++ Standard dialect in use. | |
LBAL_LIBCPP23 | |
These are all taken from features that have been incorporated into the C++23 Standard. | |
| #define | LBAL_LIBCPP23_ADAPTOR_ITERATOR_PAIR_CONSTRUCTOR |
| Iterators pair constructors for stack and queue. | |
| #define | LBAL_LIBCPP23_ALGORITHM_ITERATOR_REQUIREMENTS |
| Ranges iterators as inputs to non-Ranges algorithms. | |
| #define | LBAL_LIBCPP23_ALLOCATE_AT_LEAST |
| Provide size feedback in the Allocator interface. | |
| #define | LBAL_LIBCPP23_ALLOCATE_AT_LEAST_DISALLOW_USER_SPEC |
| Disallow user specialization of allocator_traits. | |
| #define | LBAL_LIBCPP23_ASSOCIATIVE_HETEROGENEOUS_ERASURE |
| Heterogeneous erasure overloads for associative containers. | |
| #define | LBAL_LIBCPP23_BARRIER_RELAXED_COMPLETION |
| Relax std::barrier phase completion step guarantees. | |
| #define | LBAL_LIBCPP23_BIND_BACK |
| Pipe support for user-defined range adaptors. | |
| #define | LBAL_LIBCPP23_BYTESWAP |
| Byteswapping for fun&&nuf. | |
| #define | LBAL_LIBCPP23_COMMON_REFERENCE |
| common_reference_t of reference_wrapper Should Be a Reference Type | |
| #define | LBAL_LIBCPP23_COMMON_REFERENCE_WRAPPER |
| common_reference_t of reference_wrapper Should Be a Reference Type | |
| #define | LBAL_LIBCPP23_CONCEPTS_MOVE_ONLY |
| Add move-only types for equality_comparable_with, totally_ordered_with, and three_way_comparable_with. | |
| #define | LBAL_LIBCPP23_CONSTEXPR_BITSET |
| A more constexpr bitset. | |
| #define | LBAL_LIBCPP23_CONSTEXPR_CHARCONV |
| Add Constexpr Modifiers to Functions to_chars and from_chars for Integral Types in Header. | |
| #define | LBAL_LIBCPP23_CONSTEXPR_CMATH |
| constexpr for cmath and cstdlib | |
| #define | LBAL_LIBCPP23_CONSTEXPR_MEMORY_UNIQUE_PTR |
| Make std::unique_ptr constexpr. | |
| #define | LBAL_LIBCPP23_CONSTEXPR_TYPEINFO |
| Making std::type_info::operator== constexpr. | |
| #define | LBAL_LIBCPP23_CONTAINERS_RANGES |
| Conversions from ranges to containers. | |
| #define | LBAL_LIBCPP23_EXPECTED |
| std::expected | |
| #define | LBAL_LIBCPP23_EXPECTED_MONADIC |
| Monadic Functions for std::expected. | |
| #define | LBAL_LIBCPP23_FLAT_MAP |
| A Standard flat_map. | |
| #define | LBAL_LIBCPP23_FLAT_SET |
| A Standard flat_set. | |
| #define | LBAL_LIBCPP23_FORMAT |
| Add std::format improvements. | |
| #define | LBAL_LIBCPP23_FORMATTERS |
| Formatting thread::id and stacktrace. | |
| #define | LBAL_LIBCPP23_FORMAT_BASIC_FORMAT_STRING |
| Exposing std::basic_format_string. | |
| #define | LBAL_LIBCPP23_FORMAT_ENCODINGS |
| Clarify encoding handling in localized formatting of <chrono> types. | |
| #define | LBAL_LIBCPP23_FORMAT_GENERATOR |
| Add support for std::generator-like types to std::format. | |
| #define | LBAL_LIBCPP23_FORMAT_LOCALE |
| Fix locale handling in std::chrono formatters. | |
| #define | LBAL_LIBCPP23_FORMAT_RANGES |
| Formatting Ranges. | |
| #define | LBAL_LIBCPP23_FORWARD_LIKE |
| forward_like | |
| #define | LBAL_LIBCPP23_GENERATOR |
| std::generator: Synchronous Coroutine Generator for Ranges | |
| #define | LBAL_LIBCPP23_INVOKE_R |
| invoke_r | |
| #define | LBAL_LIBCPP23_IOS_NOREPLACE |
| Support exclusive mode for fstreams. | |
| #define | LBAL_LIBCPP23_IS_IMPLICIT_LIFETIME |
| A trait for implicit lifetime types. | |
| #define | LBAL_LIBCPP23_IS_SCOPED_ENUM |
| A proposal for a type trait to detect scoped enumerations. | |
| #define | LBAL_LIBCPP23_MDSPAN |
| mdspan | |
| #define | LBAL_LIBCPP23_MODULES |
| Standard Library Modules std and std.compat. | |
| #define | LBAL_LIBCPP23_MONADIC_OPTIONAL |
| Add monadic operations for std::optional. | |
| #define | LBAL_LIBCPP23_MOVE_ITERATOR_CONCEPT |
| move_iterator should be a random access iterator | |
| #define | LBAL_LIBCPP23_MOVE_ONLY_FUNCTION |
| move_only_function (was any_invocable) | |
| #define | LBAL_LIBCPP23_OPTIONAL_CONSTEXPR |
| Add further constexpr support for std::optional. | |
| #define | LBAL_LIBCPP23_OPTIONAL_MONADIC |
| Add monadic operations for std::optional. | |
| #define | LBAL_LIBCPP23_OUT_PTR |
| out_ptr - a scalable output pointer abstraction | |
| #define | LBAL_LIBCPP23_PRINT |
| Formatted output. | |
| #define | LBAL_LIBCPP23_RANGES_AS_CONST |
| cbegin should always return a constant iterator | |
| #define | LBAL_LIBCPP23_RANGES_AS_RVALUE |
| views::as_rvalue | |
| #define | LBAL_LIBCPP23_RANGES_CARTESIAN_PRODUCT |
| views::cartesian_product | |
| #define | LBAL_LIBCPP23_RANGES_CARTESIAN_PRODUCT_EMPTY |
| Empty Product for certain Views. | |
| #define | LBAL_LIBCPP23_RANGES_CHUNK |
| Windowing range adaptors: views::chunk and views::slide. | |
| #define | LBAL_LIBCPP23_RANGES_CHUNK_BY |
| views::chunk_by | |
| #define | LBAL_LIBCPP23_RANGES_CONTAINS |
| std::ranges::contains | |
| #define | LBAL_LIBCPP23_RANGES_ENUMERATE |
| views::enumerate | |
| #define | LBAL_LIBCPP23_RANGES_FIND_LAST |
| find_last | |
| #define | LBAL_LIBCPP23_RANGES_FOLD |
| ranges::fold | |
| #define | LBAL_LIBCPP23_RANGES_FORMALIZED_VIEW |
| What is a view? | |
| #define | LBAL_LIBCPP23_RANGES_IOTA |
| ranges::iota, ranges::shift_left, and ranges::shift_right | |
| #define | LBAL_LIBCPP23_RANGES_JOIN_WITH |
| views::join_with | |
| #define | LBAL_LIBCPP23_RANGES_NON_DEFAULT_CONSTRUCTIBLE |
| Views should not be required to be default constructible. | |
| #define | LBAL_LIBCPP23_RANGES_RELAXED |
| Relaxing Ranges Just A Smidge. | |
| #define | LBAL_LIBCPP23_RANGES_REMOVE_POISON_PILLS |
| Poison Pills are Too Toxic. | |
| #define | LBAL_LIBCPP23_RANGES_REPEAT |
| views::repeat | |
| #define | LBAL_LIBCPP23_RANGES_SLIDE |
| Windowing range adaptors: views::chunk and views::slide. | |
| #define | LBAL_LIBCPP23_RANGES_STARTS_ENDS_WITH |
| starts_with and ends_with | |
| #define | LBAL_LIBCPP23_RANGES_STRIDE |
| stride_view | |
| #define | LBAL_LIBCPP23_RANGES_SUPPORT_MOVE_ONLY_TYPES |
| Relaxing range adaptors to allow for move only types. | |
| #define | LBAL_LIBCPP23_RANGES_TO_CONTAINER |
| Conversions from ranges to containers. | |
| #define | LBAL_LIBCPP23_RANGES_USER_ADAPTOR_PIPES |
| Pipe support for user-defined range adaptors. | |
| #define | LBAL_LIBCPP23_RANGES_ZIP |
| zip | |
| #define | LBAL_LIBCPP23_REFERENCE_FROM_TEMPORARY |
| A type trait to detect reference binding to temporary. | |
| #define | LBAL_LIBCPP23_SHIFT_RANGES |
| ranges::iota, ranges::shift_left, and ranges::shift_right | |
| #define | LBAL_LIBCPP23_SPANSTREAM |
| A strstream replacement using span as buffer. | |
| #define | LBAL_LIBCPP23_STACKTRACE |
| A Proposal to add stacktrace library. | |
| #define | LBAL_LIBCPP23_START_LIFETIME_AS |
| Explicit lifetime management. | |
| #define | LBAL_LIBCPP23_STDATOMIC_H |
| Support C atomics in C++. | |
| #define | LBAL_LIBCPP23_STRING_CONTAINS |
| String Contains function. | |
| #define | LBAL_LIBCPP23_STRING_RESIZE_AND_OVERWRITE |
| basic_string::resize_and_overwrite | |
| #define | LBAL_LIBCPP23_TO_UNDERLYING |
| std::to_underlying | |
| #define | LBAL_LIBCPP23_TUPLE_LIKE |
| Compatibility between tuple, pair and tuple-like objects. | |
| #define | LBAL_LIBCPP23_UNREACHABLE |
| Function to mark unreachable code. | |
| #define | LBAL_LIBCPP23_VARIANT_CONSTEXPR |
| Add further constexpr support for std::variant. | |
| #define | LBAL_LIBCPP23_VARIANT_INHERITANCE |
| Address inheriting from std::variant. | |
LBAL_LIBCPP26 | |
These are all taken from features that have been incorporated into the C++26 Standard. | |
| #define | LBAL_LIBCPP26_ALGORITHM_DEFAULT_VALUE_TYPE |
| Adjoints to 'Enabling list-initialization for algorithms': find_last and uninitialized_fill. | |
| #define | LBAL_LIBCPP26_ALIGNED_ACCESSOR |
| An mdspan accessor expressing pointer overalignment. | |
| #define | LBAL_LIBCPP26_ASSOCIATIVE_HETEROGENEOUS_INSERTION |
| Extending associative containers with the remaining heterogeneous overloads. | |
| #define | LBAL_LIBCPP26_ATOMIC_MIN_MAX |
| Atomic maximum/minimum. | |
| #define | LBAL_LIBCPP26_ATOMIC_MIN_MAX_FLOAT |
| Atomic floating-point min/max. | |
| #define | LBAL_LIBCPP26_ATOMIC_REDUCTIONS |
| Atomic Reduction Operations. | |
| #define | LBAL_LIBCPP26_ATOMIC_REF_ADDRESS |
| Expose std::atomic_ref’s object address. | |
| #define | LBAL_LIBCPP26_ATOMIC_REF_SAFER_ADDRESS |
| Safer atomic_ref::address. | |
| #define | LBAL_LIBCPP26_BIND_FRONT_NTTP_CALLABLES |
| Bind front and back to NTTP callables. | |
| #define | LBAL_LIBCPP26_BITSET |
| Interfacing bitset with string_view. | |
| #define | LBAL_LIBCPP26_CHRONO_HASHING |
| Add hashing support for std::chrono value classes. | |
| #define | LBAL_LIBCPP26_CONSTANT_WRAPPER |
| std::constexpr_wrapper | |
| #define | LBAL_LIBCPP26_CONSTANT_WRAPPER_UNWRAP_ON_CALL |
| constant_wrapper should unwrap on call and subscript | |
| #define | LBAL_LIBCPP26_CONSTEXPR_ALGORITHMS_STABLE_SORT |
| Add constexpr to std::swap and related functions. | |
| #define | LBAL_LIBCPP26_CONSTEXPR_ATOMIC |
| constexpr atomic and atomic_ref | |
| #define | LBAL_LIBCPP26_CONSTEXPR_COMPLEX |
| Add more constexpr support to <cmath> and <complex>. | |
| #define | LBAL_LIBCPP26_CONSTEXPR_DEQUE |
| constexpr containers and adapters | |
| #define | LBAL_LIBCPP26_CONSTEXPR_EXCEPTIONS |
| constexpr exception types | |
| #define | LBAL_LIBCPP26_CONSTEXPR_FLAT_MAP |
| constexpr containers and adapters | |
| #define | LBAL_LIBCPP26_CONSTEXPR_FLAT_SET |
| constexpr containers and adapters | |
| #define | LBAL_LIBCPP26_CONSTEXPR_FORMAT |
| constexpr std::format | |
| #define | LBAL_LIBCPP26_CONSTEXPR_FORWARD_LIST |
| constexpr containers and adapters | |
| #define | LBAL_LIBCPP26_CONSTEXPR_LIST |
| constexpr containers and adapters | |
| #define | LBAL_LIBCPP26_CONSTEXPR_MAP |
| constexpr containers and adapters | |
| #define | LBAL_LIBCPP26_CONSTEXPR_MEMORY_SHARED_PTR |
| Make std::shared_ptr and friends constexpr. | |
| #define | LBAL_LIBCPP26_CONSTEXPR_QUEUE |
| constexpr containers and adapters | |
| #define | LBAL_LIBCPP26_CONSTEXPR_SET |
| constexpr containers and adapters | |
| #define | LBAL_LIBCPP26_CONSTEXPR_STACK |
| constexpr containers and adapters | |
| #define | LBAL_LIBCPP26_CONSTEXPR_UNORDERED_MAP |
| constexpr containers and adapters | |
| #define | LBAL_LIBCPP26_CONSTEXPR_UNORDERED_SET |
| constexpr containers and adapters | |
| #define | LBAL_LIBCPP26_CONSTRAINED_EQUALITY |
| Comparisons for reference_wrapper. | |
| #define | LBAL_LIBCPP26_CONSTRAINED_EQUALITY_EXPECTED |
| Constrain std::expected equality operators. | |
| #define | LBAL_LIBCPP26_COPYABLE_FUNCTION |
| copyable_function | |
| #define | LBAL_LIBCPP26_COUNTING_SCOPE |
| async_scope — Creating scopes for non-sequential concurrency | |
| #define | LBAL_LIBCPP26_DEBUGGING |
| Debugging Support. | |
| #define | LBAL_LIBCPP26_DEBUGGING_UTILITIES |
| is_debugger_present is_replaceable | |
| #define | LBAL_LIBCPP26_DEFAULT_TEMPLATE_TYPE_FOR_ALGORITHM_VALUES |
| Enabling list-initialization for algorithms. | |
| #define | LBAL_LIBCPP26_DEFINE_STATIC |
| define_static_{string,object,array} | |
| #define | LBAL_LIBCPP26_EXCEPTION_PTR_CAST |
| Observing exceptions stored in exception_ptr. | |
| #define | LBAL_LIBCPP26_EXCEPTION_PTR_CAST_BETTER_RETURN_TYPES |
| Better return types in std::inplace_vector and std::exception_ptr_cast. | |
| #define | LBAL_LIBCPP26_EXCEPTION_PTR_CAST_CONSTEXPR |
| Inspecting exception_ptr works should be constexpr. | |
| #define | LBAL_LIBCPP26_FLAT_MAP_FIXES |
| flat_meow Fixes | |
| #define | LBAL_LIBCPP26_FLAT_SET_FIXES |
| flat_meow Fixes | |
| #define | LBAL_LIBCPP26_FORMAT_MEMBER_VISIT |
| Member visit. | |
| #define | LBAL_LIBCPP26_FORMAT_PATH |
| Formatting of std::filesystem::path. | |
| #define | LBAL_LIBCPP26_FORMAT_PATH_FIXES |
| Prevent path presentation problems. | |
| #define | LBAL_LIBCPP26_FORMAT_POINTERS |
| Format pointers. | |
| #define | LBAL_LIBCPP26_FORMAT_RUNTIME |
| Add runtime format strings. | |
| #define | LBAL_LIBCPP26_FORMAT_TYPE_CHECK |
| Type check format args. | |
| #define | LBAL_LIBCPP26_FORMAT_UCHAR |
| Fix formatting of code units as integers (Dude, where’s my char?). | |
| #define | LBAL_LIBCPP26_FREESTANDING_ALGORITHM |
| Freestanding Library: Partial Classes. | |
| #define | LBAL_LIBCPP26_FREESTANDING_ALGORITHM_MORE |
| Freestanding Library: algorithm, numeric, and random. | |
| #define | LBAL_LIBCPP26_FREESTANDING_ARRAY |
| Freestanding Library: Partial Classes. | |
| #define | LBAL_LIBCPP26_FREESTANDING_CHARCONV |
| Freestanding Library: Character primitives and the C library. | |
| #define | LBAL_LIBCPP26_FREESTANDING_CHAR_TRAITS |
| Freestanding Library: Character primitives and the C library. | |
| #define | LBAL_LIBCPP26_FREESTANDING_CSTDLIB |
| Freestanding Library: Character primitives and the C library. | |
| #define | LBAL_LIBCPP26_FREESTANDING_CSTRING |
| Freestanding Library: Character primitives and the C library. | |
| #define | LBAL_LIBCPP26_FREESTANDING_CSTRING_REMOVE_STRTOK |
| Freestanding: Remove strtok. | |
| #define | LBAL_LIBCPP26_FREESTANDING_CWCHAR |
| Freestanding Library: Character primitives and the C library. | |
| #define | LBAL_LIBCPP26_FREESTANDING_ERRC |
| Freestanding Library: Character primitives and the C library. | |
| #define | LBAL_LIBCPP26_FREESTANDING_EXECUTION |
| Freestanding Library: algorithm, numeric, and random. | |
| #define | LBAL_LIBCPP26_FREESTANDING_EXPECTED |
| Freestanding Library: inout expected span. | |
| #define | LBAL_LIBCPP26_FREESTANDING_FEATURE_TEST_MACROS |
| Freestanding Feature-Test Macros and Implementation-Defined Extensions. | |
| #define | LBAL_LIBCPP26_FREESTANDING_FUNCTIONAL |
| Freestanding Feature-Test Macros and Implementation-Defined Extensions. | |
| #define | LBAL_LIBCPP26_FREESTANDING_ITERATOR |
| Freestanding Feature-Test Macros and Implementation-Defined Extensions. | |
| #define | LBAL_LIBCPP26_FREESTANDING_MDSPAN |
| Freestanding Library: inout expected span. | |
| #define | LBAL_LIBCPP26_FREESTANDING_MEMORY |
| Freestanding Feature-Test Macros and Implementation-Defined Extensions. | |
| #define | LBAL_LIBCPP26_FREESTANDING_MEMORY_MORE |
| Freestanding Library: algorithm, numeric, and random. | |
| #define | LBAL_LIBCPP26_FREESTANDING_NUMERIC |
| Freestanding Library: algorithm, numeric, and random. | |
| #define | LBAL_LIBCPP26_FREESTANDING_OPERATOR_NEW |
| Freestanding Feature-Test Macros and Implementation-Defined Extensions. | |
| #define | LBAL_LIBCPP26_FREESTANDING_OPTIONAL |
| Freestanding Library: Partial Classes. | |
| #define | LBAL_LIBCPP26_FREESTANDING_RANDOM |
| Freestanding Library: algorithm, numeric, and random. | |
| #define | LBAL_LIBCPP26_FREESTANDING_RANGES |
| Freestanding Feature-Test Macros and Implementation-Defined Extensions. | |
| #define | LBAL_LIBCPP26_FREESTANDING_RATIO |
| Freestanding Feature-Test Macros and Implementation-Defined Extensions. | |
| #define | LBAL_LIBCPP26_FREESTANDING_STRING_VIEW |
| Freestanding Library: Partial Classes. | |
| #define | LBAL_LIBCPP26_FREESTANDING_TUPLE |
| Freestanding Feature-Test Macros and Implementation-Defined Extensions. | |
| #define | LBAL_LIBCPP26_FREESTANDING_UTILITY |
| Freestanding Feature-Test Macros and Implementation-Defined Extensions. | |
| #define | LBAL_LIBCPP26_FREESTANDING_VARIANT |
| Freestanding Library: Partial Classes. | |
| #define | LBAL_LIBCPP26_FSTREAM_NATIVE_HANDLE |
| Native handles and file streams. | |
| #define | LBAL_LIBCPP26_FUNCTION_REF |
| function_ref: a non-owning reference to a Callable | |
| #define | LBAL_LIBCPP26_FUNCTION_REF_LESS_DOUBLE_INDIRECTION |
| Less double indirection in function_ref. | |
| #define | LBAL_LIBCPP26_FUNCTION_REF_RENAME_NONTYPE |
| Rename std::nontype, and make it broadly useful. | |
| #define | LBAL_LIBCPP26_GENERATE_RANDOM |
| Vector API for random number generation. | |
| #define | LBAL_LIBCPP26_HARDENED_ARRAY |
| Standard Library Hardening. | |
| #define | LBAL_LIBCPP26_HARDENED_BASIC_STACKTRACE |
| Minor additions to C++26 standard library hardening. | |
| #define | LBAL_LIBCPP26_HARDENED_BASIC_STRING |
| Standard Library Hardening. | |
| #define | LBAL_LIBCPP26_HARDENED_BASIC_STRING_VIEW |
| Standard Library Hardening. | |
| #define | LBAL_LIBCPP26_HARDENED_BITSET |
| Standard Library Hardening. | |
| #define | LBAL_LIBCPP26_HARDENED_COMMON_ITERATOR |
| Minor additions to C++26 standard library hardening. | |
| #define | LBAL_LIBCPP26_HARDENED_COUNTED_ITERATOR |
| Minor additions to C++26 standard library hardening. | |
| #define | LBAL_LIBCPP26_HARDENED_DEQUE |
| Standard Library Hardening. | |
| #define | LBAL_LIBCPP26_HARDENED_EXPECTED |
| Standard Library Hardening. | |
| #define | LBAL_LIBCPP26_HARDENED_FORWARD_LIST |
| Standard Library Hardening. | |
| #define | LBAL_LIBCPP26_HARDENED_INPLACE_VECTOR |
| Standard Library Hardening. | |
| #define | LBAL_LIBCPP26_HARDENED_LIST |
| Standard Library Hardening. | |
| #define | LBAL_LIBCPP26_HARDENED_MDSPAN |
| Standard Library Hardening. | |
| #define | LBAL_LIBCPP26_HARDENED_OPTIONAL |
| Standard Library Hardening. | |
| #define | LBAL_LIBCPP26_HARDENED_SHARED_PTR_ARRAY |
| Minor additions to C++26 standard library hardening. | |
| #define | LBAL_LIBCPP26_HARDENED_SPAN |
| Standard Library Hardening. | |
| #define | LBAL_LIBCPP26_HARDENED_VALARRAY |
| Standard Library Hardening. | |
| #define | LBAL_LIBCPP26_HARDENED_VECTOR |
| Standard Library Hardening. | |
| #define | LBAL_LIBCPP26_HARDENED_VIEW_INTERFACE |
| Minor additions to C++26 standard library hardening. | |
| #define | LBAL_LIBCPP26_HAZARD_POINTER |
| Hazard Pointers for C++26. | |
| #define | LBAL_LIBCPP26_HIVE |
| Introduction of std::hive to the standard library. | |
| #define | LBAL_LIBCPP26_INDIRECT |
| Vocabulary Types for Composite Class Design. | |
| #define | LBAL_LIBCPP26_INITIALIZER_LIST |
| Resolve inconsistencies in begin/end for valarray and braced initializer lists. | |
| #define | LBAL_LIBCPP26_INPLACE_VECTOR |
| inplace_vector | |
| #define | LBAL_LIBCPP26_INPLACE_VECTOR_BETTER_RETURN_TYPES |
| Better return types in std::inplace_vector and std::exception_ptr_cast. | |
| #define | LBAL_LIBCPP26_INPLACE_VECTOR_REMOVE_TRY_APPEND_RANGE |
| Remove try_append_range from inplace_vector for now. | |
| #define | LBAL_LIBCPP26_INTEGER_SEQUENCE_EXPANSION_STATEMENTS |
| Add library Support for Expansion Statements. | |
| #define | LBAL_LIBCPP26_IS_STRUCTURAL |
| New reflection metafunction— | |
| #define | LBAL_LIBCPP26_IS_VIRTUAL_BASE_OF |
| A type trait for detecting virtual base classes. | |
| #define | LBAL_LIBCPP26_IS_WITHIN_LIFETIME |
| Checking if a union alternative is active. | |
| #define | LBAL_LIBCPP26_IS_WITHIN_LIFETIME_EXTEND |
| Extend std::is_within_lifetime. | |
| #define | LBAL_LIBCPP26_LINALG |
| A free function linear algebra interface based on the BLAS. | |
| #define | LBAL_LIBCPP26_LINALG_BLAS_RANK |
| Fix C++26 by making the rank-1, rank-2, rank-k, and rank-2k updates consistent with the BLAS. | |
| #define | LBAL_LIBCPP26_LINALG_FIX_TRANSPOSED |
| Fix C++26 by adding transposed special cases for P2642 layouts. | |
| #define | LBAL_LIBCPP26_LINALG_OPTIMIZE_CONJUGATED |
| Fix C++26 by optimizing linalg::conjugated for noncomplex value types. | |
| #define | LBAL_LIBCPP26_MDSPAN_DEXTENTS |
| dextents Index Type Parameter | |
| #define | LBAL_LIBCPP26_NOT_FN_NTTP_CALLABLES |
| Bind not_fn to NTTP callables. | |
| #define | LBAL_LIBCPP26_OBSERVABLE_CHECKPOINT |
| Rename std::observable to std::observable_checkpoint, and add a feature-test macro. | |
| #define | LBAL_LIBCPP26_OPTIONAL_RANGE_SUPPORT |
| Give std::optional Range Support. | |
| #define | LBAL_LIBCPP26_OPTIONAL_REFERENCE |
| std::optional<T&> | |
| #define | LBAL_LIBCPP26_OUT_PTR_MORE |
| Freestanding Library: inout expected span. | |
| #define | LBAL_LIBCPP26_PARALLEL_ALGORITHM_RANGE |
| Add C++ parallel range algorithms. | |
| #define | LBAL_LIBCPP26_PARALLEL_SCHEDULER |
| Parallel Scheduler. | |
| #define | LBAL_LIBCPP26_PHILOX_ENGINE |
| Philox as an extension of the C++ RNG engines. | |
| #define | LBAL_LIBCPP26_POLYMORPHIC |
| Vocabulary Types for Composite Class Design. | |
| #define | LBAL_LIBCPP26_PRINT_EFFICIENT |
| Permit an efficient implementation of std::print. | |
| #define | LBAL_LIBCPP26_PRINT_MORE_EFFICIENT |
| std::print more types faster with less memory | |
| #define | LBAL_LIBCPP26_RANGES_AS_CONST_FIX_CONVERTIBILITY |
| std::basic_const_iterator should follow its underlying type’s convertibility | |
| #define | LBAL_LIBCPP26_RANGES_AS_INPUT |
| views::to_input | |
| #define | LBAL_LIBCPP26_RANGES_AS_INPUT_RENAME |
| Rename the to_input view to as_input. | |
| #define | LBAL_LIBCPP26_RANGES_CACHE_LATEST |
| views::cache_latest | |
| #define | LBAL_LIBCPP26_RANGES_CONCAT |
| views::concat | |
| #define | LBAL_LIBCPP26_RANGES_FILTER |
| Filter View Extensions for Safer Use, Rev 3. | |
| #define | LBAL_LIBCPP26_RANGES_INDICES |
| Add std::views::indices(n). | |
| #define | LBAL_LIBCPP26_RANGES_REMOVE_COMMON_REF_REQ |
| Removing the common reference requirement from the indirectly invocable concepts. | |
| #define | LBAL_LIBCPP26_RANGES_RESERVE_HINT |
| reserve_hint: Eagerly reserving memory for not-quite-sized lazy ranges | |
| #define | LBAL_LIBCPP26_RATIO |
| Adding the new 2022 SI prefixes. | |
| #define | LBAL_LIBCPP26_RAW_MEMORY_ALGORITHMS_CONSTEXPR |
| Improve constexpr supprt for raw memory management. | |
| #define | LBAL_LIBCPP26_RCU |
| Read-Copy Update (RCU). | |
| #define | LBAL_LIBCPP26_REFERENCE_WRAPPER |
| Comparisons for reference_wrapper. | |
| #define | LBAL_LIBCPP26_REFLECTION |
| Error Handling in Reflection. | |
| #define | LBAL_LIBCPP26_REFLECTION_CLEANUP |
| Miscellaneous Reflection Cleanup. | |
| #define | LBAL_LIBCPP26_REFLECTION_RENAME_TO_IS_VARARG_FUNCTION |
| Rename meta::has_ellipsis_parameter to meta::is_vararg_function. | |
| #define | LBAL_LIBCPP26_REPLACEABLE_CONTRACT_VIOLATION_HANDLER |
| Wording for AT1-057. | |
| #define | LBAL_LIBCPP26_SATURATION_ARITHMETIC |
| Saturation arithmetic. | |
| #define | LBAL_LIBCPP26_SATURATION_ARITHMETIC_RENAMING |
| Renaming saturation arithmetic functions. | |
| #define | LBAL_LIBCPP26_SENDERS |
| std::execution | |
| #define | LBAL_LIBCPP26_SENDERS_OPTIONAL |
| optional variants in sender/receiver | |
| #define | LBAL_LIBCPP26_SIMD |
| std::simd - Merge data-parallel types from the Parallelism TS 2 | |
| #define | LBAL_LIBCPP26_SIMD_BIT |
| Extend <bit> header function with overloads for std::simd. | |
| #define | LBAL_LIBCPP26_SIMD_CHUNK |
| Rename simd_split to simd_chunk. | |
| #define | LBAL_LIBCPP26_SIMD_COMPLEX |
| Proposal to support interleaved complex values in std::simd. | |
| #define | LBAL_LIBCPP26_SIMD_DEDUCTION_GUIDES |
| Missing deduction guide from simd::mask to simd::vec. | |
| #define | LBAL_LIBCPP26_SIMD_EXTEND |
| Proposal to extend std::simd with more constructors and accessors. | |
| #define | LBAL_LIBCPP26_SIMD_IOTA |
| Add an iota object for simd (and more). | |
| #define | LBAL_LIBCPP26_SIMD_NAMESPACES |
| Exploration of namespaces for std::simd. | |
| #define | LBAL_LIBCPP26_SIMD_PERMUTATIONS |
| Proposal to extend std::simd with permutation API. | |
| #define | LBAL_LIBCPP26_SIMD_RANGE |
| std::simd is a range | |
| #define | LBAL_LIBCPP26_SMART_POINTER_OWNER_EQUALITY |
| Enabling the Use of weak_ptr as Keys in Unordered Associative Containers. | |
| #define | LBAL_LIBCPP26_SMART_PTR_OWNER_EQUALITY |
| Enabling the Use of weak_ptr as Keys in Unordered Associative Containers. | |
| #define | LBAL_LIBCPP26_SPAN_AT |
| span.at() | |
| #define | LBAL_LIBCPP26_SPAN_INITIALIZER_LIST |
| std::span over an initializer list | |
| #define | LBAL_LIBCPP26_SPAN_MORE |
| Freestanding Library: inout expected span. | |
| #define | LBAL_LIBCPP26_SSTREAM_FROM_STRING_VIEW |
| Interfacing stringstreams with string_view. | |
| #define | LBAL_LIBCPP26_START_LIFETIME |
| Adjustments to union Lifetime Rules. | |
| #define | LBAL_LIBCPP26_STDBIT_H |
| Add new library headers from C23. | |
| #define | LBAL_LIBCPP26_STDCKDINT_H |
| Add new library headers from C23. | |
| #define | LBAL_LIBCPP26_STRING_SUBVIEW |
| sub-string_view from string | |
| #define | LBAL_LIBCPP26_STRING_VIEW_CONCAT |
| Allow concatenation of std::string and std::string_view. | |
| #define | LBAL_LIBCPP26_SUBMDSPAN |
| submdspan | |
| #define | LBAL_LIBCPP26_SUBMDSPAN_FIX |
| Fix submdspan for C++26. | |
| #define | LBAL_LIBCPP26_SUBMDSPAN_FUTURE_PROOF |
| Future-proof submdspan-mapping. | |
| #define | LBAL_LIBCPP26_SUBMDSPAN_PADDED |
| Padded mdspan layouts. | |
| #define | LBAL_LIBCPP26_SUBMDSPAN_UPDATE |
| Working Draft: Programming Languages—C++. | |
| #define | LBAL_LIBCPP26_TASK |
| Add a Coroutine Task Type. | |
| #define | LBAL_LIBCPP26_TEXT_ENCODING |
| Naming Text Encodings to Demystify Them. | |
| #define | LBAL_LIBCPP26_TO_CHARS_BOOL_TEST |
| Test for success or failure of <charconv> functions. | |
| #define | LBAL_LIBCPP26_TO_STRING |
| to_string or not to_string | |
| #define | LBAL_LIBCPP26_TUPLE_LIKE_COMPLEX |
| Add tuple protocol to complex. | |
| #define | LBAL_LIBCPP26_TYPE_ORDER |
| Standardized Constexpr Type Ordering. | |
| #define | LBAL_LIBCPP26_VALARRAY |
| Resolve inconsistencies in begin/end for valarray and braced initializer lists. | |
| #define | LBAL_LIBCPP26_VARIANT_VISITOR |
| Member visit for std::variant. | |
LBAL_LIBCPP2D | |
These are all taken from features that have been incorporated into the C++2d Draft Standard.
| |
| #define | LBAL_LIBCPP2D_BITOPS_BETTER_SHIFTING |
| Better Shifting. | |
| #define | LBAL_LIBCPP2D_BITOPS_PERMUTATIONS |
| Bit permutations. | |
| #define | LBAL_LIBCPP2D_CONSTANT_WRAPPER_REVERT_STRING |
| Revert string support in std::constant_wrapper. | |
| #define | LBAL_LIBCPP2D_EXPECTED_UEXPECTED |
| The unexpected in std::expected. | |
| #define | LBAL_LIBCPP2D_HAZARD_POINTER_BATCHES |
| Hazard Pointer Batches. | |
| #define | LBAL_LIBCPP2D_MAP_LOOKUP |
| Better Lookups for map, unordered_map, and flat_map. | |
| #define | LBAL_LIBCPP2D_MDSPAN_COPY |
| Copy and fill for mdspan. | |
| #define | LBAL_LIBCPP2D_POINTER_TAG_PAIR |
| constexpr pointer tagging | |
| #define | LBAL_LIBCPP2D_SIMD_BITOPS |
| std::simd overloads for bit permutations | |
| #define | LBAL_LIBCPP2D_SIMD_BITOPS_BETTER_SHIFTING |
| Better Shifting. | |
| #define | LBAL_LIBCPP2D_THREAD_ATTRIBUTES |
| Thread attributes. | |
| #define | LBAL_LIBCPP2D_TO_CHARS_FIX_FLOAT |
| Fix the default floating-point representation in std::format. | |
| #define | LBAL_LIBCPP2D_VIEW_INTERFACE |
| view_interface::at() | |
Provides feature detection describing the capabilities of the Standard Library implementation.
These tokens relate to library features. They are a mix of binary availability flags and versioned values describing levels of support. Where possible, these mimic the equivalent SD-6 macros, both in their naming and in their ranges of values. A variety of detection methods are used, but ultimately if availability of a given feature could only be determined by doing something that might cause a compilation error, we choose instead to assume the feature is not available. This behavior may be overridden by the client by explicitly setting the relevant macro. For example, if we’re unable to determine whether there is library support for Complex literals, we’ll set LBAL_LIBCPP14_COMPLEX_UDLS to 0; however, if the client is aware of support, they can manually set it 1 prior to our testing, and we will not override this setting unless we explicitly determine that it is incorrect.
Certain LBAL_LIBCPP*_* macros have corresponding LBAL_LIBCPP*_*_EXP macros; these latter macros are only set to a non-zero value if an experimental header is being used, which typically happens as a result of a given feature being part of a Technical Specification that has not yet been incorporated into the Standard. Note that LBAL_LIBCPP*_* and LBAL_LIBCPP*_*_EXP are mutually exclusive:
Finally, note that if either macro is user-set to 0, its value will not be changed, regardless of circumstances.
| #define LBAL_LIBCPP14_CHRONO_UDLS |
User-defined Literals for <chrono> types.
SD-6 equivalent: __cpp_lib_chrono_udls >= 201304L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP14_COMPLEX_UDLS |
User-defined Literals for <complex>.
SD-6 equivalent: __cpp_lib_complex_udls >= 201309L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP14_EXCHANGE_FUNCTION |
Add std::exchange utility function.
SD-6 equivalent: __cpp_lib_exchange_function >= 201304L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP14_GENERIC_ASSOCIATIVE_LOOKUP |
Add heterogeneous comparison lookup to associative containers.
SD-6 equivalent: __cpp_lib_generic_associative_lookup >= 201304L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP14_INTEGER_SEQUENCE |
Add template-based integer sequences.
SD-6 equivalent: __cpp_lib_integer_sequence >= 201304L. Note that __cpp_lib_integer_sequence has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP14_INTEGRAL_CONSTANT_CALLABLE |
Add constexpr operator-() to std::integral_constant.
SD-6 equivalent: __cpp_lib_integral_constant_callable >= 201304L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP14_IS_FINAL |
Detect finalized classes.
SD-6 equivalent: __cpp_lib_is_final >= 201402L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP14_IS_NULL_POINTER |
Detect null pointers.
SD-6 equivalent: __cpp_lib_is_null_pointer >= 201309L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP14_MAKE_REVERSE_ITERATOR |
std::make_reverse_iterator
SD-6 equivalent: __cpp_lib_make_reverse_iterator >= 201402L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP14_MAKE_UNIQUE |
std::make_unique
SD-6 equivalent: __cpp_lib_make_unique >= 201304L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP14_NULL_ITERATORS |
Allow value-initialized forward iterators to be compared.
SD-6 equivalent: __cpp_lib_null_iterators >= 201304L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP14_QUOTED_STRING_IO |
Add quoted-string sream i/o manipulator.
SD-6 equivalent: __cpp_lib_quoted_string_io >= 201304L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP14_RESULT_OF_SFINAE |
Make std::result_of SFINAE-friendly.
SD-6 equivalent: __cpp_lib_result_of_sfinae >= 201210L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP14_ROBUST_NONMODIFYING_SEQ_OPS |
Make non-modifying sequence operations more robust.
SD-6 equivalent: __cpp_lib_robust_nonmodifying_seq_ops >= 201304L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP14_SHARED_TIMED_MUTEX |
Rename std::shared_mutex to std::shared_timed_mutex.
SD-6 equivalent: __cpp_lib_shared_timed_mutex >= 201402L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP14_STRING_UDLS |
Predefine UDLs for strings.
SD-6 equivalent: __cpp_lib_string_udls >= 201304L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP14_TRANSFORMATION_TRAIT_ALIASES |
Provide type aliases for transformation traits.
SD-6 equivalent: __cpp_lib_transformation_trait_aliases >= 201304L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP14_TRANSPARENT_OPERATORS |
Allow heterogeneous arguments to operator functors and template their function call operators.
SD-6 equivalent: __cpp_lib_transparent_operators >= 201210L. Note that __cpp_lib_transparent_operators has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP14_TUPLE_ELEMENT_T |
Add std::tuple element_t type alias.
SD-6 equivalent: __cpp_lib_tuple_element_t >= 201402L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP14_TUPLES_BY_TYPE |
Allow addressing std::tuples by type.
SD-6 equivalent: __cpp_lib_tuples_by_type >= 201304L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_ADDRESSOF_CONSTEXPR |
Make std::addressof constexpr, as per defect report.
SD-6 equivalent: __cpp_lib_addressof_constexpr >= 201603L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_ALLOCATOR_TRAITS_IS_ALWAYS_EQUAL |
Clean up noexcept usage (Rev 3).
SD-6 equivalent: __cpp_lib_allocator_traits_is_always_equal >= 201411L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_ANY |
<any> components from Library Fundamentals V1 TS
SD-6 equivalent: __cpp_lib_any >= 201603L. Note that __cpp_lib_any has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_ANY_INTERFACE |
Impose homogeneous interface for std::variant, std::any and std::optional (Rev 3).
SD-6 equivalent: __cpp_lib_any >= 201606L. Note that __cpp_lib_any has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_APPLY |
std::apply component from Library Fundamentals V1 TS
SD-6 equivalent: __cpp_lib_apply >= 201603L. Note that __cpp_lib_apply has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_ARRAY_CONSTEXPR |
Add constexpr modifiers to std::reverse_iterator, std::move_iterator, <array> and Range Access types.
SD-6 equivalent: __cpp_lib_array_constexpr >= 201603L. Note that __cpp_lib_array_constexpr has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_AS_CONST |
Add std::as_const helper function template.
SD-6 equivalent: __cpp_lib_as_const >= 201510L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_ATOMIC_IS_ALWAYS_LOCK_FREE |
Add constexpr atomic<T>::is_always_lock_free.
SD-6 equivalent: __cpp_lib_atomic_is_always_lock_free >= 201603L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_BOOL_CONSTANT |
Introduce std::bool_constant.
SD-6 equivalent: __cpp_lib_bool_constant >= 201505L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_BOYER_MOORE_SEARCHER |
Add text search components from Library Fundamentals V1 TS.
SD-6 equivalent: __cpp_lib_boyer_moore_searcher >= 201603L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_BYTE |
Define std::byte type.
SD-6 equivalent: __cpp_lib_byte >= 201603L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_CHRONO |
Rounding and abs fixes for <chrono>.
SD-6 equivalent: __cpp_lib_chrono >= 201510L. Note that __cpp_lib_chrono has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_CHRONO_CONSTEXPR |
Add constexpr to certain <chrono> functions.
SD-6 equivalent: __cpp_lib_chrono >= 201611L. Note that __cpp_lib_chrono has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_CLAMP |
Standard clamping algorithm.
SD-6 equivalent: __cpp_lib_clamp >= 201603L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_CONSTEXPR_STRING |
Make std::char_traits constexpr.
SD-6 equivalent: __cpp_lib_constexpr_string >= 201611L. Note that __cpp_lib_constexpr_string has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_CONSTEXPR_STRING_VIEW |
Make std::char_traits constexpr.
SD-6 equivalent: __cpp_lib_constexpr_string_view >= 201611L. Note that __cpp_lib_constexpr_string_view has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_DEDUCTION_GUIDES |
Toward a resolution of US7 and US14: Integrating template deduction for class templates into the standard library.
SD-6 equivalent: __cpp_lib_deduction_guides >= 201703L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_ENABLE_SHARED_FROM_THIS |
Re-enable std::shared_from_this.
SD-6 equivalent: __cpp_lib_enable_shared_from_this >= 201603L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_EXECUTION |
Add Library components of the Parallelism TS.
SD-6 equivalent: __cpp_lib_execution >= 201603L. Note that __cpp_lib_execution has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_FILESYSTEM |
Adopt File System TS.
SD-6 equivalent: __cpp_lib_filesystem >= 201603L. Note that __cpp_lib_filesystem has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_FILESYSTEM_DIRECTORY_ENTRY_CACHING |
Add directory entry caching to <filesystem>.
SD-6 equivalent: __cpp_lib_filesystem >= 201703L. Note that __cpp_lib_filesystem has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_FILESYSTEM_EXP |
Experimental implementation of the Filesystem TS.
SD-6 equivalent: __cpp_lib_experimental_filesystem >= 201603L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_FILESYSTEM_PATHS_EXPANDED |
Add relative path and std::string_view support to <filesystem>.
SD-6 equivalent: __cpp_lib_filesystem >= 201606L. Note that __cpp_lib_filesystem has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_FILESYSTEM_RELATIVE_PATHS |
Relative Paths for Filesystem.
SD-6 equivalent: __cpp_lib_filesystem >= 201606L. Note that __cpp_lib_filesystem has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_GCD_LCM |
Add std::gcd and std::lcm.
SD-6 equivalent: __cpp_lib_gcd_lcm >= 201606L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_HARDWARE_INTERFERENCE_SIZE |
Provide relevant cache line sizes for construction and destruction.
SD-6 equivalent: __cpp_lib_hardware_interference_size >= 201703L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_HAS_UNIQUE_OBJECT_REPRESENTATIONS |
Add std::has_unique_object_representations.
This obliquely-named trait indicates whether a given type can be trivially hashed (e.g., it has no padding bits that would require special handling).
SD-6 equivalent: __cpp_lib_has_unique_object_representations >= 201606L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_HYPOT |
Introduce a 3-argument overload to std::hypot.
This standardizes finding 3-dimensional distance as well as 2- dimensional distance.
SD-6 equivalent: __cpp_lib_hypot >= 201603L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_INCOMPLETE_CONTAINER_ELEMENTS |
Introduce minimal incomplete type support for Standard containers.
SD-6 equivalent: __cpp_lib_incomplete_container_elements >= 201505L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_INVOKE |
Add std::invoke function template.
SD-6 equivalent: __cpp_lib_invoke >= 201411L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_IS_AGGREGATE |
Add std::is_aggregate type trait.
SD-6 equivalent: __cpp_lib_is_aggregate >= 201703L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_IS_INVOCABLE |
Add std::is_invocable type trait to replace is_callable.
SD-6 equivalent: __cpp_lib_is_invocable >= 201703L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_IS_SWAPPABLE |
Add std::is_swappable type trait family.
SD-6 equivalent: __cpp_lib_is_swappable >= 201603L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_LAUNDER |
Replacement of class objects containing reference members.
SD-6 equivalent: __cpp_lib_launder >= 201606L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_LOGICAL_TRAITS |
Provide type traits for performing logical operations.
SD-6 equivalent: __cpp_lib_logical_traits >= 201510L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_MAKE_FROM_TUPLE |
Introduce std::make_from_tuple to unpack a tuple into arguments.
SD-6 equivalent: __cpp_lib_make_from_tuple >= 201606L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_MAP_TRY_EMPLACE |
Improve insertion into std::map.
SD-6 equivalent: __cpp_lib_map_try_emplace >= 201411L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_MATH_SPECIAL_FUNCTIONS |
Incorporate math functions specified in IS 29124:2010.
SD-6 equivalent: __cpp_lib_math_special_functions >= 201603L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_MEMORY_RESOURCE |
Incorporate memory management components from Library Fundamentals V1 TS.
SD-6 equivalent: __cpp_lib_memory_resource >= 201603L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_NODE_EXTRACT |
Add splicing to associative containers.
SD-6 equivalent: __cpp_lib_node_extract >= 201606L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_NONMEMBER_CONTAINER_ACCESS |
Incorporate non-member functions into Standard container class interfaces.
SD-6 equivalent: __cpp_lib_nonmember_container_access >= 201411L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_NOT_FN |
Add std::not_fn.
SD-6 equivalent: __cpp_lib_not_fn >= 201603L. Note that __cpp_lib_not_fn has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_OPTIONAL |
Add std::optional.
SD-6 equivalent: __cpp_lib_optional >= 201603L. Note that __cpp_lib_optional has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_OPTIONAL_GREATER_EQUAL |
Homogenize std::optional interface with std::any and std::variant.
SD-6 equivalent: __cpp_lib_optional >= 201606L. Note that __cpp_lib_optional has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_OPTIONAL_INTERFACE |
Homogenize std::optional interface with std::any and std::variant.
SD-6 equivalent: __cpp_lib_optional >= 201606L. Note that __cpp_lib_optional has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_PARALLEL_ALGORITHM |
Standardize the Parallelism TS.
SD-6 equivalent: __cpp_lib_parallel_algorithm >= 201603L. Note that __cpp_lib_parallel_algorithm has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_RAW_MEMORY_ALGORITHMS |
Supply tools for raw memory management.
SD-6 equivalent: __cpp_lib_raw_memory_algorithms >= 201606L. Note that __cpp_lib_raw_memory_algorithms has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_SAMPLE |
Adopt std::sample from the Library Fundamentals V1 TS.
SD-6 equivalent: __cpp_lib_sample >= 201603L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_SCOPED_LOCK |
Add a variadic variant of std::lock_guard under a new name.
SD-6 equivalent: __cpp_lib_scoped_lock >= 201703L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_SHARED_MUTEX |
Officially change std::shared_mutex to an untimed mutex.
This change was corresponds to the addition of an explicit std::shared_timed_mutex.
SD-6 equivalent: __cpp_lib_shared_mutex >= 201505L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_SHARED_PTR_ARRAYS |
Fix std::shared_ptr support for arrays.
SD-6 equivalent: __cpp_lib_shared_ptr_arrays >= 201611L. Note that __cpp_lib_shared_ptr_arrays has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_SHARED_PTR_WEAK_TYPE |
Add shared_ptr::weak_type.
SD-6 equivalent: __cpp_lib_shared_ptr_weak_type >= 201606L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_STANDARDIZATION_OF_PARALLELISM_TS |
Track full compliance with the Parallelism Standard.
This token tracks compliance with the Standard as it relates to implementing the referenced Working Group paper; there is no correspoding SD-6 macro, or rather, there are two relevant macros which each track the different features required for compliance. We actually track both of those, as well as this meta-feature, separately. As such, this token represents an aggregate condition: if both LBAL_LIBCPP17_EXECUTION and LBAL_LIBCPP17_PARALLEL_ALGORITHM indicate compliance, this gets set to 1; otherwise, it’s set to 0.
| #define LBAL_LIBCPP17_STRING_VIEW |
Adopt std::string_view from the Library Fundamentals V1 TS.
SD-6 equivalent: __cpp_lib_string_view >= 201603L. Note that __cpp_lib_string_view has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_STRING_VIEW_INTERFACE |
Address interface inversion between <string> and <string_view>.
SD-6 equivalent: __cpp_lib_string_view >= 201606L. Note that __cpp_lib_string_view has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_TO_CHARS |
Elementary string conversions, revision 5.
This token tracks compliance with both the integer and floating-point tokens for to_chars and from_chars.
SD-6 equivalent: __cpp_lib_to_chars >= 201611L. Note that __cpp_lib_to_chars has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_TO_CHARS_FP |
Floating-point compliance with Elementary string conversions.
This tracks the floating-point conversion portion of LBAL_LIBCPP17_TO_CHARS.
SD-6 equivalent: __cpp_lib_to_chars >= 201611L. Note that __cpp_lib_to_chars has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_TO_CHARS_INTEGER |
Integer compliance with Elementary string conversions.
This tracks the integer conversion portion of LBAL_LIBCPP17_TO_CHARS.
SD-6 equivalent: __cpp_lib_to_chars >= 201611L. Note that __cpp_lib_to_chars has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_TRANSPARENT_OPERATORS |
Make std::owner_less more flexible.
SD-6 equivalent: __cpp_lib_transparent_operators >= 201510L. Note that __cpp_lib_transparent_operators has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_TYPE_TRAIT_VARIABLE_TEMPLATES |
Adopt variable templates for type traits from the Library Fundamentals V1 TS.
SD-6 equivalent: __cpp_lib_type_trait_variable_templates >= 201510L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_UNCAUGHT_EXCEPTIONS |
Add std::uncaught_exceptions.
SD-6 equivalent: __cpp_lib_uncaught_exceptions >= 201411L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_UNORDERED_MAP_TRY_EMPLACE |
Improve insertion into std::unordered_map.
SD-6 equivalent: __cpp_lib_unordered_map_try_emplace >= 201411L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_VARIANT |
Add std::variant.
SD-6 equivalent: __cpp_lib_variant >= 201606L. Note that __cpp_lib_variant has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP17_VOID_T |
Add std::void_t as a transformation type trait.
SD-6 equivalent: __cpp_lib_void_t >= 201411L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_ARRAY_CONSTEXPR_COMPARISONS |
Provide constexpr comparison operators for std::array.
SD-6 equivalent: __cpp_lib_array_constexpr >= 201806L. Note that __cpp_lib_array_constexpr has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_ARRAY_CONSTEXPR_ITERATOR |
Define requirements for constexpr iterators.
SD-6 equivalent: __cpp_lib_array_constexpr >= 201803L. Note that __cpp_lib_array_constexpr has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_ARRAY_CONSTEXPR_UTILITIES |
Provide constexpr std::array swap and fill.
SD-6 equivalent: __cpp_lib_array_constexpr >= 201811L. Note that __cpp_lib_array_constexpr has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_ASSUME_ALIGNED |
Provide std::assume_aligned compiler hint utility function Library.
SD-6 equivalent: __cpp_lib_assume_aligned >= 201811L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_ATOMIC_FLAG_TEST |
Add atomic_flag::test components of the C++20 Synchronization Library.
SD-6 equivalent: __cpp_lib_atomic_flag_test >= 201907L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_ATOMIC_FLOAT |
Extend <atomic> support to floating point types.
SD-6 equivalent: __cpp_lib_atomic_float >= 201711L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_ATOMIC_LOCK_FREE_TYPE_ALIASES |
Add atomic lockfree type aliases from the C++20 Synchronization.
SD-6 equivalent: __cpp_lib_atomic_lock_free_type_aliases >= 201907L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_ATOMIC_REF |
Allow atomic operations to apply to non-atomic objects.
SD-6 equivalent: __cpp_lib_atomic_ref >= 201806L. Note that __cpp_lib_atomic_ref has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_ATOMIC_SHARED_PTR |
Fixes for atomic std::shared_ptr and std::weak_ptr.
SD-6 equivalent: __cpp_lib_atomic_shared_ptr >= 201711L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_ATOMIC_VALUE_INITIALIZATION |
Eliminate the surprising value-initialization behavior of std::atomic.
SD-6 equivalent: __cpp_lib_atomic_value_initialization >= 201911L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_ATOMIC_WAIT |
Add atomic wait components of the C++20 Synchronization Library.
SD-6 equivalent: __cpp_lib_atomic_wait >= 201907L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_BARRIER |
Add std::barrier components of the C++20 Synchronization Library.
SD-6 equivalent: __cpp_lib_barrier >= 201907L. Note that __cpp_lib_barrier has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_BIND_FRONT |
Introduce std::bind_front to supersede std::bind.
SD-6 equivalent: __cpp_lib_bind_front >= 201811L. Note that __cpp_lib_bind_front has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_BIND_FRONT_NO_UNWRAP |
Prevent std::bind_front from unwrapping std::reference_wrapper.
SD-6 equivalent: __cpp_lib_bind_front >= 201907L. Note that __cpp_lib_bind_front has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_BIT_CAST |
Introduce robust casts between bit-compatible types.
SD-6 equivalent: __cpp_lib_bit_cast >= 201806L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_BITOPS |
Introduce support for hardware-level bit operations.
SD-6 equivalent: __cpp_lib_bitops >= 201907L. Note that __cpp_lib_bitops has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_BOUNDED_ARRAY_TRAITS |
Introduce traits to distinguish between bounded and unbounded arrays.
SD-6 equivalent: __cpp_lib_bounded_array_traits >= 201902L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_CHAR8_T |
Define char8_t as the base type for UTF-8 encodings (Rev 6).
SD-6 equivalent: __cpp_lib_char8_t >= 201811L. Note that __cpp_lib_char8_t has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_CHAR8_T_COMPAT |
Fix backward compatibility issues introduced by char8_t.
SD-6 equivalent: __cpp_lib_char8_t >= 201907L. Note that __cpp_lib_char8_t has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_CHRONO_CALENDAR |
Add support for Calendars and Time Zones to <chrono>.
SD-6 equivalent: __cpp_lib_chrono >= 201803L. Note that __cpp_lib_chrono has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_CHRONO_FIXES |
Miscellaneous minor fixes for <chrono>.
SD-6 equivalent: __cpp_lib_chrono >= 201907L. Note that __cpp_lib_chrono has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_CONCEPTS |
Standard Library Concepts.
SD-6 equivalent: __cpp_lib_concepts >= 201806L. Note that __cpp_lib_concepts has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_CONCEPTS_BOOLEAN_TESTABLE |
Wording for boolean-testable.
SD-6 equivalent: __cpp_lib_concepts >= 202002L. Note that __cpp_lib_concepts has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_CONCEPTS_EXP |
Experimental version of Standard Library Concepts.
SD-6 equivalent: __cpp_lib_experimental_concepts >= 201806L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_CONCEPTS_STANDARD_CASE |
Rename C++ Concepts to use standard_case.
SD-6 equivalent: __cpp_lib_concepts >= 201907L. Note that __cpp_lib_concepts has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_CONSTEXPR_ALGORITHMS |
Add constexpr to <algorithm> and <utility> functions.
SD-6 equivalent: __cpp_lib_constexpr_algorithms >= 201806L. Note that __cpp_lib_constexpr_algorithms has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_CONSTEXPR_ALGORITHMS_SWAP |
Add constexpr to std::swap and related functions.
SD-6 equivalent: __cpp_lib_constexpr_algorithms >= 201806L. Note that __cpp_lib_constexpr_algorithms has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_CONSTEXPR_COMPLEX |
Add more constexpr support to <complex>.
SD-6 equivalent: __cpp_lib_constexpr_complex >= 201711L. Note that __cpp_lib_constexpr_complex has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_CONSTEXPR_DYNAMIC_ALLOC |
Add constexpr memory allocators used by dynamic containers.
SD-6 equivalent: __cpp_lib_constexpr_dynamic_alloc >= 201907L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_CONSTEXPR_FUNCTIONAL |
Make more of <functional> constexpr.
SD-6 equivalent: __cpp_lib_constexpr_functional >= 201811L. Note that __cpp_lib_constexpr_functional has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_CONSTEXPR_FUNCTIONAL_INVOKE |
Make std::invoke constexpr.
SD-6 equivalent: __cpp_lib_constexpr_functional >= 201907L. Note that __cpp_lib_constexpr_functional has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_CONSTEXPR_ITERATOR |
Make more of <iterator> constexpr.
SD-6 equivalent: __cpp_lib_constexpr_iterator >= 201811L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_CONSTEXPR_MEMORY |
Make std::pointer_traits constexpr.
SD-6 equivalent: __cpp_lib_constexpr_memory >= 201811L. Note that __cpp_lib_constexpr_memory has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_CONSTEXPR_NUMERIC |
Make numeric algorithms constexpr.
SD-6 equivalent: __cpp_lib_constexpr_numeric >= 201911L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_CONSTEXPR_STRING |
Make std::string constexpr.
SD-6 equivalent: __cpp_lib_constexpr_string >= 201907L. Note that __cpp_lib_constexpr_string has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_CONSTEXPR_STRING_PARTIAL |
Make parts of std::string constexpr.
SD-6 equivalent: __cpp_lib_constexpr_string >= 201811L. Note that __cpp_lib_constexpr_string has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_CONSTEXPR_STRING_VIEW |
Make more of <string_view> constexpr.
SD-6 equivalent: __cpp_lib_constexpr_string_view >= 201811L. Note that __cpp_lib_constexpr_string_view has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_CONSTEXPR_TUPLE |
Make more of <tuple> constexpr.
SD-6 equivalent: __cpp_lib_constexpr_tuple >= 201811L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_CONSTEXPR_UTILITY |
Make more of <tuple> constexpr.
SD-6 equivalent: __cpp_lib_constexpr_utility >= 201811L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_CONSTEXPR_VECTOR |
Make std::vector constexpr.
SD-6 equivalent: __cpp_lib_constexpr_vector >= 201907L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_COROUTINE |
Standard Library coroutines.
SD-6 equivalent: __cpp_lib_coroutine >= 201902L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_COROUTINE_EXP |
Experimental Standard Library coroutines.
SD-6 equivalent: __cpp_lib_experimental_coroutine >= 201902L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_DESTROYING_DELETE |
Efficient sized delete for variable-sized classes.
SD-6 equivalent: __cpp_lib_destroying_delete >= 201806L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_ENDIAN |
Add std::endian enum.
SD-6 equivalent: __cpp_lib_endian >= 201907L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_ENDIAN_BIT |
Relocate std::endian to <bit>.
SD-6 equivalent: __cpp_lib_endian >= 201907L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_ERASE_IF |
Adopt consistent container erasure.
SD-6 equivalent: __cpp_lib_erase_if >= 201811L. Note that __cpp_lib_erase_if has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_ERASE_IF_FREE_FUNCTIONS |
Update erase_if free function return types.
SD-6 equivalent: __cpp_lib_erase_if >= 202002L. Note that __cpp_lib_erase_if has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_EXECUTION_VECTORIZATION |
Add target vectorization policies from the Parallelism V2 TS.
SD-6 equivalent: __cpp_lib_execution >= 201902L. Note that __cpp_lib_execution has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_FORMAT |
Add text formatting functionality to properly replace printf.
SD-6 equivalent: __cpp_lib_format >= 201907L. Note that __cpp_lib_format has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_GENERIC_UNORDERED_HASH_LOOKUP |
The feature was removed prior to Standardization.
SD-6 equivalent: __cpp_lib_generic_unordered_hash_lookup >= 201902L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_GENERIC_UNORDERED_LOOKUP |
Heterogeneous lookup for unordered containers.
SD-6 equivalent: __cpp_lib_generic_unordered_lookup >= 201811L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_INT_POW2 |
Integral power-of-2 operations.
SD-6 equivalent: __cpp_lib_int_pow2 >= 201806L. Note that __cpp_lib_int_pow2 has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_INT_POW2_FUNCTION_RENAME |
Rename the assorted bit-manipulation fucntions.
SD-6 equivalent: __cpp_lib_int_pow2 >= 202002L. Note that __cpp_lib_int_pow2 has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_INTEGER_COMPARISON_FUNCTIONS |
Add Safe integral comparisons.
SD-6 equivalent: __cpp_lib_integer_comparison_functions >= 202002L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_INTERPOLATE |
Add well-behaved interpolation for numbers and pointers.
SD-6 equivalent: __cpp_lib_interpolate >= 201902L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_IS_CONSTANT_EVALUATED |
Add std::is_constant_evaluated type trait.
SD-6 equivalent: __cpp_lib_is_constant_evaluated >= 201811L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_IS_LAYOUT_COMPATIBLE |
Add std::is_layout_compatible type trait.
SD-6 equivalent: __cpp_lib_is_layout_compatible >= 201907L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_IS_NOTHROW_CONVERTIBLE |
Add std::is_nothrow_convertible type trait.
SD-6 equivalent: __cpp_lib_is_nothrow_convertible >= 201806L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_IS_POINTER_INTERCONVERTIBLE |
Add std::is_pointer_interconvertible type trait.
SD-6 equivalent: __cpp_lib_is_pointer_interconvertible >= 201907L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_JTHREAD |
Add a cooperatively interruptible joining thread.
SD-6 equivalent: __cpp_lib_jthread >= 201907L. Note that __cpp_lib_jthread has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_JTHREAD_CV |
Simplify condition variable API.
SD-6 equivalent: __cpp_lib_jthread >= 201911L. Note that __cpp_lib_jthread has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_LATCH |
Incorporate std::latch from the C++20 Synchronization Library.
SD-6 equivalent: __cpp_lib_latch >= 201907L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_LIST_REMOVE_RETURN_TYPE |
Improve the return value of erase-like algorithms.
SD-6 equivalent: __cpp_lib_list_remove_return_type >= 201806L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_MATH_CONSTANTS |
Add common math constants to the C++ Standard.
SD-6 equivalent: __cpp_lib_math_constants >= 201907L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_POLYMORPHIC_ALLOCATOR |
Provide a default template argument for std::polymorphic_allocator.
SD-6 equivalent: __cpp_lib_polymorphic_allocator >= 201902L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_RANGES |
Incorporate ranges into the C++ Standard.
SD-6 equivalent: __cpp_lib_ranges >= 201811L. Note that __cpp_lib_ranges has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_RANGES_INPUT_ADAPTORS |
Add input range adaptors.
SD-6 equivalent: __cpp_lib_ranges >= 201907L. Note that __cpp_lib_ranges has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_RANGES_LOOSENED_COMPARE |
Loosen the constraints on range-based compare algorithms.
SD-6 equivalent: __cpp_lib_ranges >= 201911L. Note that __cpp_lib_ranges has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_REMOVE_CVREF |
Add std::remove_cvref type trait.
SD-6 equivalent: __cpp_lib_remove_cvref >= 201711L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_SEMAPHORE |
Incorporate std::semaphore from the C++20 Synchronization Library.
SD-6 equivalent: __cpp_lib_semaphore >= 201907L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_SHARED_PTR_ARRAYS |
Extend std::make_shared to support C-style arrays.
SD-6 equivalent: __cpp_lib_shared_ptr_arrays >= 201707L. Note that __cpp_lib_shared_ptr_arrays has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_SHIFT |
Add std::shift_left and std::shift_right.
SD-6 equivalent: __cpp_lib_shift >= 201806L. Note that __cpp_lib_shift has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_SMART_PTR_FOR_OVERWRITE |
Support smart pointer creation with default initialization.
SD-6 equivalent: __cpp_lib_smart_ptr_for_overwrite >= 202002L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_SOURCE_LOCATION |
Adopt std::source_location from the Library Fundamentals V3 TS.
SD-6 equivalent: __cpp_lib_source_location >= 201907L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_SPAN |
Add std::span.
SD-6 equivalent: __cpp_lib_span >= 201803L. Note that __cpp_lib_span has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_SPAN_FIXED_SIZE |
Fix constructing a fixed-size std::span from a dynamic range.
SD-6 equivalent: __cpp_lib_span >= 202002L. Note that __cpp_lib_span has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_SPAN_USABILITY |
Enhance usability for std::span.
SD-6 equivalent: __cpp_lib_span >= 201902L. Note that __cpp_lib_span has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_SSIZE |
Add std::ssize and fix std::span’s size return values.
SD-6 equivalent: __cpp_lib_ssize >= 201902L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_STARTS_ENDS_WITH |
Add string prefix- and suffix-checking.
SD-6 equivalent: __cpp_lib_starts_ends_with >= 201711L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_STRING_VIEW_CONSTEXPR_ITERATOR |
Add support for constexpr iterators to <string_view>.
SD-6 equivalent: __cpp_lib_string_view >= 201803L. Note that __cpp_lib_string_view has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_SYNCBUF |
Add synchronized buffered output streams.
SD-6 equivalent: __cpp_lib_syncbuf >= 201711L. Note that __cpp_lib_syncbuf has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_SYNCBUF_MANIPULATORS |
Add manipulators for synchronized buffered output streams.
SD-6 equivalent: __cpp_lib_syncbuf >= 201803L. Note that __cpp_lib_syncbuf has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_THREE_WAY_COMPARISON |
Add <compare> to the Standard Library.
SD-6 equivalent: __cpp_lib_three_way_comparison >= 201711L. Note that __cpp_lib_three_way_comparison has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_THREE_WAY_COMPARISON_LIBRARY |
Add three-way comparison support to the Standard Library.
SD-6 equivalent: __cpp_lib_three_way_comparison >= 201907L. Note that __cpp_lib_three_way_comparison has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_TO_ADDRESS |
Provide a utility to convert a pointer to a raw pointer.
SD-6 equivalent: __cpp_lib_to_address >= 201711L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_TO_ARRAY |
Adopt std::to_array from the Library Fundamentals TS.
SD-6 equivalent: __cpp_lib_to_array >= 201907L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_TYPE_IDENTITY |
Add the std::identity metafunction.
SD-6 equivalent: __cpp_lib_type_identity >= 201806L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_UNWRAP_REF |
Add std::unwrap_reference and std::unwrap_ref_decay.
SD-6 equivalent: __cpp_lib_unwrap_ref >= 201811L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP20_VERSION |
Identifies whether <version> is present and include-able given the current C++ Standard dialect in use.
Unlike <version>, lucenaBAL tracks “correct”, functioning implementations only. For this reason, it is recommended to always favor the lucenaBAL reporting of a given feature’s availability, even when <version> is available.
| #define LBAL_LIBCPP23_ADAPTOR_ITERATOR_PAIR_CONSTRUCTOR |
Iterators pair constructors for stack and queue.
SD-6 equivalent: __cpp_lib_adaptor_iterator_pair_constructor >= 202106L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_ALGORITHM_ITERATOR_REQUIREMENTS |
Ranges iterators as inputs to non-Ranges algorithms.
SD-6 equivalent: __cpp_lib_algorithm_iterator_requirements >= 202207L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_ALLOCATE_AT_LEAST |
Provide size feedback in the Allocator interface.
SD-6 equivalent: __cpp_lib_allocate_at_least >= 202106L. Note that __cpp_lib_allocate_at_least has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_ALLOCATE_AT_LEAST_DISALLOW_USER_SPEC |
Disallow user specialization of allocator_traits.
SD-6 equivalent: __cpp_lib_allocate_at_least >= 202302L. Note that __cpp_lib_allocate_at_least has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_ASSOCIATIVE_HETEROGENEOUS_ERASURE |
Heterogeneous erasure overloads for associative containers.
SD-6 equivalent: __cpp_lib_associative_heterogeneous_erasure >= 202110L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_BARRIER_RELAXED_COMPLETION |
Relax std::barrier phase completion step guarantees.
SD-6 equivalent: __cpp_lib_barrier >= 202302L. Note that __cpp_lib_barrier has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_BIND_BACK |
Pipe support for user-defined range adaptors.
SD-6 equivalent: __cpp_lib_bind_back >= 202202L. Note that __cpp_lib_bind_back has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_BYTESWAP |
Byteswapping for fun&&nuf.
SD-6 equivalent: __cpp_lib_byteswap >= 202110L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_COMMON_REFERENCE |
common_reference_t of reference_wrapper Should Be a Reference Type
SD-6 equivalent: __cpp_lib_common_reference >= 202302L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_COMMON_REFERENCE_WRAPPER |
common_reference_t of reference_wrapper Should Be a Reference Type
SD-6 equivalent: __cpp_lib_common_reference_wrapper >= 202302L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_CONCEPTS_MOVE_ONLY |
Add move-only types for equality_comparable_with, totally_ordered_with, and three_way_comparable_with.
SD-6 equivalent: __cpp_lib_concepts >= 202207L. Note that __cpp_lib_concepts has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_CONSTEXPR_BITSET |
A more constexpr bitset.
SD-6 equivalent: __cpp_lib_constexpr_bitset >= 202207L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_CONSTEXPR_CHARCONV |
Add Constexpr Modifiers to Functions to_chars and from_chars for Integral Types in Header.
SD-6 equivalent: __cpp_lib_constexpr_charconv >= 202207L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_CONSTEXPR_CMATH |
constexpr for cmath and cstdlib
SD-6 equivalent: __cpp_lib_constexpr_cmath >= 202202L. Note that __cpp_lib_constexpr_cmath has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_CONSTEXPR_MEMORY_UNIQUE_PTR |
Make std::unique_ptr constexpr.
SD-6 equivalent: __cpp_lib_constexpr_memory >= 202202L. Note that __cpp_lib_constexpr_memory has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_CONSTEXPR_TYPEINFO |
Making std::type_info::operator== constexpr.
SD-6 equivalent: __cpp_lib_constexpr_typeinfo >= 202106L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_CONTAINERS_RANGES |
Conversions from ranges to containers.
SD-6 equivalent: __cpp_lib_containers_ranges >= 202202L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_EXPECTED |
std::expected
SD-6 equivalent: __cpp_lib_expected >= 202202L. Note that __cpp_lib_expected has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_EXPECTED_MONADIC |
Monadic Functions for std::expected.
SD-6 equivalent: __cpp_lib_expected >= 202211L. Note that __cpp_lib_expected has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_FLAT_MAP |
A Standard flat_map.
SD-6 equivalent: __cpp_lib_flat_map >= 202207L. Note that __cpp_lib_flat_map has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_FLAT_SET |
A Standard flat_set.
SD-6 equivalent: __cpp_lib_flat_set >= 202207L. Note that __cpp_lib_flat_set has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_FORMAT |
Add std::format improvements.
SD-6 equivalent: __cpp_lib_format >= 202106L. Note that __cpp_lib_format has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_FORMAT_BASIC_FORMAT_STRING |
Exposing std::basic_format_string.
SD-6 equivalent: __cpp_lib_format >= 202207L. Note that __cpp_lib_format has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_FORMAT_ENCODINGS |
Clarify encoding handling in localized formatting of <chrono> types.
SD-6 equivalent: __cpp_lib_format >= 202207L. Note that __cpp_lib_format has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_FORMAT_GENERATOR |
Add support for std::generator-like types to std::format.
SD-6 equivalent: __cpp_lib_format >= 202110L. Note that __cpp_lib_format has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_FORMAT_LOCALE |
Fix locale handling in std::chrono formatters.
SD-6 equivalent: __cpp_lib_format >= 202110L. Note that __cpp_lib_format has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_FORMAT_RANGES |
Formatting Ranges.
SD-6 equivalent: __cpp_lib_format_ranges >= 202207L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_FORMATTERS |
Formatting thread::id and stacktrace.
SD-6 equivalent: __cpp_lib_formatters >= 202302L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_FORWARD_LIKE |
forward_like
SD-6 equivalent: __cpp_lib_forward_like >= 202207L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_GENERATOR |
std::generator: Synchronous Coroutine Generator for Ranges
SD-6 equivalent: __cpp_lib_generator >= 202207L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_INVOKE_R |
invoke_r
SD-6 equivalent: __cpp_lib_invoke_r >= 202106L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_IOS_NOREPLACE |
Support exclusive mode for fstreams.
SD-6 equivalent: __cpp_lib_ios_noreplace >= 202207L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_IS_IMPLICIT_LIFETIME |
A trait for implicit lifetime types.
SD-6 equivalent: __cpp_lib_is_implicit_lifetime >= 202302L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_IS_SCOPED_ENUM |
A proposal for a type trait to detect scoped enumerations.
SD-6 equivalent: __cpp_lib_is_scoped_enum >= 202011L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_MDSPAN |
mdspan
SD-6 equivalent: __cpp_lib_mdspan >= 202207L. Note that __cpp_lib_mdspan has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_MODULES |
Standard Library Modules std and std.compat.
SD-6 equivalent: __cpp_lib_modules >= 202207L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_MONADIC_OPTIONAL |
Add monadic operations for std::optional.
SD-6 equivalent: __cpp_lib_monadic_optional >= 202110L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_MOVE_ITERATOR_CONCEPT |
move_iterator should be a random access iterator
SD-6 equivalent: __cpp_lib_move_iterator_concept >= 202207L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_MOVE_ONLY_FUNCTION |
move_only_function (was any_invocable)
SD-6 equivalent: __cpp_lib_move_only_function >= 202110L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_OPTIONAL_CONSTEXPR |
Add further constexpr support for std::optional.
SD-6 equivalent: __cpp_lib_optional >= 202106L. Note that __cpp_lib_optional has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_OPTIONAL_MONADIC |
Add monadic operations for std::optional.
SD-6 equivalent: __cpp_lib_optional >= 202110L. Note that __cpp_lib_optional has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_OUT_PTR |
out_ptr - a scalable output pointer abstraction
SD-6 equivalent: __cpp_lib_out_ptr >= 202106L. Note that __cpp_lib_out_ptr has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_PRINT |
Formatted output.
SD-6 equivalent: __cpp_lib_print >= 202207L. Note that __cpp_lib_print has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_RANGES_AS_CONST |
cbegin should always return a constant iterator
SD-6 equivalent: __cpp_lib_ranges_as_const >= 202207L. Note that __cpp_lib_ranges_as_const has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_RANGES_AS_RVALUE |
views::as_rvalue
SD-6 equivalent: __cpp_lib_ranges_as_rvalue >= 202207L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_RANGES_CARTESIAN_PRODUCT |
views::cartesian_product
SD-6 equivalent: __cpp_lib_ranges_cartesian_product >= 202207L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_RANGES_CARTESIAN_PRODUCT_EMPTY |
Empty Product for certain Views.
SD-6 equivalent: __cpp_lib_ranges_cartesian_product >= 202207L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_RANGES_CHUNK |
Windowing range adaptors: views::chunk and views::slide.
SD-6 equivalent: __cpp_lib_ranges_chunk >= 202202L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_RANGES_CHUNK_BY |
views::chunk_by
SD-6 equivalent: __cpp_lib_ranges_chunk_by >= 202202L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_RANGES_CONTAINS |
std::ranges::contains
SD-6 equivalent: __cpp_lib_ranges_contains >= 202207L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_RANGES_ENUMERATE |
views::enumerate
SD-6 equivalent: __cpp_lib_ranges_enumerate >= 202302L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_RANGES_FIND_LAST |
| #define LBAL_LIBCPP23_RANGES_FOLD |
ranges::fold
SD-6 equivalent: __cpp_lib_ranges_fold >= 202207L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_RANGES_FORMALIZED_VIEW |
What is a view?
SD-6 equivalent: __cpp_lib_ranges >= 202110L. Note that __cpp_lib_ranges has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_RANGES_IOTA |
ranges::iota, ranges::shift_left, and ranges::shift_right
SD-6 equivalent: __cpp_lib_ranges_iota >= 202202L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_RANGES_JOIN_WITH |
views::join_with
SD-6 equivalent: __cpp_lib_ranges_join_with >= 202202L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_RANGES_NON_DEFAULT_CONSTRUCTIBLE |
Views should not be required to be default constructible.
SD-6 equivalent: __cpp_lib_ranges >= 202106L. Note that __cpp_lib_ranges has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_RANGES_RELAXED |
Relaxing Ranges Just A Smidge.
SD-6 equivalent: __cpp_lib_ranges >= 202302L. Note that __cpp_lib_ranges has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_RANGES_REMOVE_POISON_PILLS |
Poison Pills are Too Toxic.
SD-6 equivalent: __cpp_lib_ranges >= 202211L. Note that __cpp_lib_ranges has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_RANGES_REPEAT |
views::repeat
SD-6 equivalent: __cpp_lib_ranges_repeat >= 202207L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_RANGES_SLIDE |
Windowing range adaptors: views::chunk and views::slide.
SD-6 equivalent: __cpp_lib_ranges_slide >= 202202L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_RANGES_STARTS_ENDS_WITH |
starts_with and ends_with
SD-6 equivalent: __cpp_lib_ranges_starts_ends_with >= 202106L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_RANGES_STRIDE |
stride_view
SD-6 equivalent: __cpp_lib_ranges_stride >= 202207L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_RANGES_SUPPORT_MOVE_ONLY_TYPES |
Relaxing range adaptors to allow for move only types.
SD-6 equivalent: __cpp_lib_ranges >= 202207L. Note that __cpp_lib_ranges has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_RANGES_TO_CONTAINER |
Conversions from ranges to containers.
SD-6 equivalent: __cpp_lib_ranges_to_container >= 202202L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_RANGES_USER_ADAPTOR_PIPES |
Pipe support for user-defined range adaptors.
SD-6 equivalent: __cpp_lib_ranges >= 202202L. Note that __cpp_lib_ranges has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_RANGES_ZIP |
zip
SD-6 equivalent: __cpp_lib_ranges_zip >= 202110L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_REFERENCE_FROM_TEMPORARY |
A type trait to detect reference binding to temporary.
SD-6 equivalent: __cpp_lib_reference_from_temporary >= 202202L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_SHIFT_RANGES |
ranges::iota, ranges::shift_left, and ranges::shift_right
SD-6 equivalent: __cpp_lib_shift >= 202202L. Note that __cpp_lib_shift has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_SPANSTREAM |
A strstream replacement using span as buffer.
SD-6 equivalent: __cpp_lib_spanstream >= 202106L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_STACKTRACE |
A Proposal to add stacktrace library.
SD-6 equivalent: __cpp_lib_stacktrace >= 202011L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_START_LIFETIME_AS |
Explicit lifetime management.
SD-6 equivalent: __cpp_lib_start_lifetime_as >= 202207L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_STDATOMIC_H |
Support C atomics in C++.
SD-6 equivalent: __cpp_lib_stdatomic_h >= 202011L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_STRING_CONTAINS |
String Contains function.
SD-6 equivalent: __cpp_lib_string_contains >= 202011L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_STRING_RESIZE_AND_OVERWRITE |
basic_string::resize_and_overwrite
SD-6 equivalent: __cpp_lib_string_resize_and_overwrite >= 202110L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_TO_UNDERLYING |
std::to_underlying
SD-6 equivalent: __cpp_lib_to_underlying >= 202102L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_TUPLE_LIKE |
Compatibility between tuple, pair and tuple-like objects.
SD-6 equivalent: __cpp_lib_tuple_like >= 202207L. Note that __cpp_lib_tuple_like has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_UNREACHABLE |
Function to mark unreachable code.
SD-6 equivalent: __cpp_lib_unreachable >= 202202L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_VARIANT_CONSTEXPR |
Add further constexpr support for std::variant.
SD-6 equivalent: __cpp_lib_variant >= 202106L. Note that __cpp_lib_variant has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP23_VARIANT_INHERITANCE |
Address inheriting from std::variant.
SD-6 equivalent: __cpp_lib_variant >= 202102L. Note that __cpp_lib_variant has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_ALGORITHM_DEFAULT_VALUE_TYPE |
Adjoints to 'Enabling list-initialization for algorithms': find_last and uninitialized_fill.
SD-6 equivalent: __cpp_lib_algorithm_default_value_type >= 202603L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_ALIGNED_ACCESSOR |
An mdspan accessor expressing pointer overalignment.
SD-6 equivalent: __cpp_lib_aligned_accessor >= 202411L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_ASSOCIATIVE_HETEROGENEOUS_INSERTION |
Extending associative containers with the remaining heterogeneous overloads.
SD-6 equivalent: __cpp_lib_associative_heterogeneous_insertion >= 202306L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_ATOMIC_MIN_MAX |
Atomic maximum/minimum.
SD-6 equivalent: __cpp_lib_atomic_min_max >= 202403L. Note that __cpp_lib_atomic_min_max has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_ATOMIC_MIN_MAX_FLOAT |
Atomic floating-point min/max.
SD-6 equivalent: __cpp_lib_atomic_min_max >= 202506L. Note that __cpp_lib_atomic_min_max has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_ATOMIC_REDUCTIONS |
Atomic Reduction Operations.
SD-6 equivalent: __cpp_lib_atomic_reductions >= 202506L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_ATOMIC_REF_ADDRESS |
Expose std::atomic_ref’s object address.
SD-6 equivalent: __cpp_lib_atomic_ref >= 202411L. Note that __cpp_lib_atomic_ref has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_ATOMIC_REF_SAFER_ADDRESS |
Safer atomic_ref::address.
SD-6 equivalent: __cpp_lib_atomic_ref >= 202603L. Note that __cpp_lib_atomic_ref has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_BIND_FRONT_NTTP_CALLABLES |
Bind front and back to NTTP callables.
SD-6 equivalent: __cpp_lib_bind_front >= 202306L. Note that __cpp_lib_bind_front has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_BITSET |
Interfacing bitset with string_view.
SD-6 equivalent: __cpp_lib_bitset >= 202306L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_CHRONO_HASHING |
Add hashing support for std::chrono value classes.
SD-6 equivalent: __cpp_lib_chrono >= 202306L. Note that __cpp_lib_chrono has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_CONSTANT_WRAPPER |
std::constexpr_wrapper
SD-6 equivalent: __cpp_lib_constant_wrapper >= 202506L. Note that __cpp_lib_constant_wrapper has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_CONSTANT_WRAPPER_UNWRAP_ON_CALL |
constant_wrapper should unwrap on call and subscript
SD-6 equivalent: __cpp_lib_constant_wrapper >= 202603L. Note that __cpp_lib_constant_wrapper has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_CONSTEXPR_ALGORITHMS_STABLE_SORT |
Add constexpr to std::swap and related functions.
SD-6 equivalent: __cpp_lib_constexpr_algorithms >= 202306L. Note that __cpp_lib_constexpr_algorithms has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_CONSTEXPR_ATOMIC |
constexpr atomic and atomic_ref
SD-6 equivalent: __cpp_lib_constexpr_atomic >= 202411L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_CONSTEXPR_COMPLEX |
Add more constexpr support to <cmath> and <complex>.
SD-6 equivalent: __cpp_lib_constexpr_complex >= 202306L. Note that __cpp_lib_constexpr_complex has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_CONSTEXPR_DEQUE |
constexpr containers and adapters
SD-6 equivalent: __cpp_lib_constexpr_deque >= 202502L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_CONSTEXPR_EXCEPTIONS |
constexpr exception types
SD-6 equivalent: __cpp_lib_constexpr_exceptions >= 202502L. Note that __cpp_lib_constexpr_exceptions has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_CONSTEXPR_FLAT_MAP |
constexpr containers and adapters
SD-6 equivalent: __cpp_lib_constexpr_flat_map >= 202502L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_CONSTEXPR_FLAT_SET |
constexpr containers and adapters
SD-6 equivalent: __cpp_lib_constexpr_flat_set >= 202502L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_CONSTEXPR_FORMAT |
constexpr std::format
SD-6 equivalent: __cpp_lib_constexpr_format >= 202511L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_CONSTEXPR_FORWARD_LIST |
constexpr containers and adapters
SD-6 equivalent: __cpp_lib_constexpr_forward_list >= 202502L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_CONSTEXPR_LIST |
constexpr containers and adapters
SD-6 equivalent: __cpp_lib_constexpr_list >= 202502L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_CONSTEXPR_MAP |
constexpr containers and adapters
SD-6 equivalent: __cpp_lib_constexpr_map >= 202502L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_CONSTEXPR_MEMORY_SHARED_PTR |
Make std::shared_ptr and friends constexpr.
SD-6 equivalent: __cpp_lib_constexpr_memory >= 202506L. Note that __cpp_lib_constexpr_memory has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_CONSTEXPR_QUEUE |
constexpr containers and adapters
SD-6 equivalent: __cpp_lib_constexpr_queue >= 202502L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_CONSTEXPR_SET |
constexpr containers and adapters
SD-6 equivalent: __cpp_lib_constexpr_set >= 202502L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_CONSTEXPR_STACK |
constexpr containers and adapters
SD-6 equivalent: __cpp_lib_constexpr_stack >= 202502L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_CONSTEXPR_UNORDERED_MAP |
constexpr containers and adapters
SD-6 equivalent: __cpp_lib_constexpr_unordered_map >= 202502L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_CONSTEXPR_UNORDERED_SET |
constexpr containers and adapters
SD-6 equivalent: __cpp_lib_constexpr_unordered_set >= 202502L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_CONSTRAINED_EQUALITY |
Comparisons for reference_wrapper.
SD-6 equivalent: __cpp_lib_constrained_equality >= 202403L. Note that __cpp_lib_constrained_equality has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_CONSTRAINED_EQUALITY_EXPECTED |
Constrain std::expected equality operators.
SD-6 equivalent: __cpp_lib_constrained_equality >= 202411L. Note that __cpp_lib_constrained_equality has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_COPYABLE_FUNCTION |
copyable_function
SD-6 equivalent: __cpp_lib_copyable_function >= 202306L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_COUNTING_SCOPE |
async_scope — Creating scopes for non-sequential concurrency
SD-6 equivalent: __cpp_lib_counting_scope >= 202506L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_DEBUGGING |
Debugging Support.
SD-6 equivalent: __cpp_lib_debugging >= 202311L. Note that __cpp_lib_debugging has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_DEBUGGING_UTILITIES |
is_debugger_present is_replaceable
SD-6 equivalent: __cpp_lib_debugging >= 202403L. Note that __cpp_lib_debugging has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_DEFAULT_TEMPLATE_TYPE_FOR_ALGORITHM_VALUES |
Enabling list-initialization for algorithms.
SD-6 equivalent: __cpp_lib_default_template_type_for_algorithm_values >= 202403L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_DEFINE_STATIC |
define_static_{string,object,array}
SD-6 equivalent: __cpp_lib_define_static >= 202506L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_EXCEPTION_PTR_CAST |
Observing exceptions stored in exception_ptr.
SD-6 equivalent: __cpp_lib_exception_ptr_cast >= 202506L. Note that __cpp_lib_exception_ptr_cast has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_EXCEPTION_PTR_CAST_BETTER_RETURN_TYPES |
Better return types in std::inplace_vector and std::exception_ptr_cast.
SD-6 equivalent: __cpp_lib_exception_ptr_cast >= 202603L. Note that __cpp_lib_exception_ptr_cast has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_EXCEPTION_PTR_CAST_CONSTEXPR |
Inspecting exception_ptr works should be constexpr.
SD-6 equivalent: __cpp_lib_exception_ptr_cast >= 202506L. Note that __cpp_lib_exception_ptr_cast has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_FLAT_MAP_FIXES |
flat_meow Fixes
SD-6 equivalent: __cpp_lib_flat_map >= 202511L. Note that __cpp_lib_flat_map has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_FLAT_SET_FIXES |
flat_meow Fixes
SD-6 equivalent: __cpp_lib_flat_set >= 202511L. Note that __cpp_lib_flat_set has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_FORMAT_MEMBER_VISIT |
Member visit.
SD-6 equivalent: __cpp_lib_format >= 202306L. Note that __cpp_lib_format has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_FORMAT_PATH |
Formatting of std::filesystem::path.
SD-6 equivalent: __cpp_lib_format_path >= 202403L. Note that __cpp_lib_format_path has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_FORMAT_PATH_FIXES |
Prevent path presentation problems.
SD-6 equivalent: __cpp_lib_format_path >= 202506L. Note that __cpp_lib_format_path has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_FORMAT_POINTERS |
Format pointers.
SD-6 equivalent: __cpp_lib_format >= 202304L. Note that __cpp_lib_format has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_FORMAT_RUNTIME |
Add runtime format strings.
SD-6 equivalent: __cpp_lib_format >= 202311L. Note that __cpp_lib_format has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_FORMAT_TYPE_CHECK |
Type check format args.
SD-6 equivalent: __cpp_lib_format >= 202305L. Note that __cpp_lib_format has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_FORMAT_UCHAR |
Fix formatting of code units as integers (Dude, where’s my char?).
SD-6 equivalent: __cpp_lib_format_uchar >= 202311L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_FREESTANDING_ALGORITHM |
Freestanding Library: Partial Classes.
SD-6 equivalent: __cpp_lib_freestanding_algorithm >= 202311L. Note that __cpp_lib_freestanding_algorithm has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_FREESTANDING_ALGORITHM_MORE |
Freestanding Library: algorithm, numeric, and random.
SD-6 equivalent: __cpp_lib_freestanding_algorithm >= 202502L. Note that __cpp_lib_freestanding_algorithm has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_FREESTANDING_ARRAY |
Freestanding Library: Partial Classes.
SD-6 equivalent: __cpp_lib_freestanding_array >= 202311L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_FREESTANDING_CHAR_TRAITS |
Freestanding Library: Character primitives and the C library.
SD-6 equivalent: __cpp_lib_freestanding_char_traits >= 202306L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_FREESTANDING_CHARCONV |
Freestanding Library: Character primitives and the C library.
SD-6 equivalent: __cpp_lib_freestanding_charconv >= 202306L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_FREESTANDING_CSTDLIB |
Freestanding Library: Character primitives and the C library.
SD-6 equivalent: __cpp_lib_freestanding_cstdlib >= 202306L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_FREESTANDING_CSTRING |
Freestanding Library: Character primitives and the C library.
SD-6 equivalent: __cpp_lib_freestanding_cstring >= 202306L. Note that __cpp_lib_freestanding_cstring has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_FREESTANDING_CSTRING_REMOVE_STRTOK |
Freestanding: Remove strtok.
SD-6 equivalent: __cpp_lib_freestanding_cstring >= 202311L. Note that __cpp_lib_freestanding_cstring has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_FREESTANDING_CWCHAR |
Freestanding Library: Character primitives and the C library.
SD-6 equivalent: __cpp_lib_freestanding_cwchar >= 202306L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_FREESTANDING_ERRC |
Freestanding Library: Character primitives and the C library.
SD-6 equivalent: __cpp_lib_freestanding_errc >= 202306L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_FREESTANDING_EXECUTION |
Freestanding Library: algorithm, numeric, and random.
SD-6 equivalent: __cpp_lib_freestanding_execution >= 202502L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_FREESTANDING_EXPECTED |
Freestanding Library: inout expected span.
SD-6 equivalent: __cpp_lib_freestanding_expected >= 202311L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_FREESTANDING_FEATURE_TEST_MACROS |
Freestanding Feature-Test Macros and Implementation-Defined Extensions.
SD-6 equivalent: __cpp_lib_freestanding_feature_test_macros >= 202306L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_FREESTANDING_FUNCTIONAL |
Freestanding Feature-Test Macros and Implementation-Defined Extensions.
SD-6 equivalent: __cpp_lib_freestanding_functional >= 202306L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_FREESTANDING_ITERATOR |
Freestanding Feature-Test Macros and Implementation-Defined Extensions.
SD-6 equivalent: __cpp_lib_freestanding_iterator >= 202306L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_FREESTANDING_MDSPAN |
Freestanding Library: inout expected span.
SD-6 equivalent: __cpp_lib_freestanding_mdspan >= 202311L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_FREESTANDING_MEMORY |
Freestanding Feature-Test Macros and Implementation-Defined Extensions.
SD-6 equivalent: __cpp_lib_freestanding_memory >= 202306L. Note that __cpp_lib_freestanding_memory has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_FREESTANDING_MEMORY_MORE |
Freestanding Library: algorithm, numeric, and random.
SD-6 equivalent: __cpp_lib_freestanding_memory >= 202502L. Note that __cpp_lib_freestanding_memory has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_FREESTANDING_NUMERIC |
Freestanding Library: algorithm, numeric, and random.
SD-6 equivalent: __cpp_lib_freestanding_numeric >= 202502L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_FREESTANDING_OPERATOR_NEW |
Freestanding Feature-Test Macros and Implementation-Defined Extensions.
SD-6 equivalent: __cpp_lib_freestanding_operator_new >= 202306L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_FREESTANDING_OPTIONAL |
Freestanding Library: Partial Classes.
SD-6 equivalent: __cpp_lib_freestanding_optional >= 202311L. Note that __cpp_lib_freestanding_optional has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_FREESTANDING_RANDOM |
Freestanding Library: algorithm, numeric, and random.
SD-6 equivalent: __cpp_lib_freestanding_random >= 202502L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_FREESTANDING_RANGES |
Freestanding Feature-Test Macros and Implementation-Defined Extensions.
SD-6 equivalent: __cpp_lib_freestanding_ranges >= 202306L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_FREESTANDING_RATIO |
Freestanding Feature-Test Macros and Implementation-Defined Extensions.
SD-6 equivalent: __cpp_lib_freestanding_ratio >= 202306L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_FREESTANDING_STRING_VIEW |
Freestanding Library: Partial Classes.
SD-6 equivalent: __cpp_lib_freestanding_string_view >= 202311L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_FREESTANDING_TUPLE |
Freestanding Feature-Test Macros and Implementation-Defined Extensions.
SD-6 equivalent: __cpp_lib_freestanding_tuple >= 202306L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_FREESTANDING_UTILITY |
Freestanding Feature-Test Macros and Implementation-Defined Extensions.
SD-6 equivalent: __cpp_lib_freestanding_utility >= 202306L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_FREESTANDING_VARIANT |
Freestanding Library: Partial Classes.
SD-6 equivalent: __cpp_lib_freestanding_variant >= 202311L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_FSTREAM_NATIVE_HANDLE |
Native handles and file streams.
SD-6 equivalent: __cpp_lib_fstream_native_handle >= 202306L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_FUNCTION_REF |
function_ref: a non-owning reference to a Callable
SD-6 equivalent: __cpp_lib_function_ref >= 202306L. Note that __cpp_lib_function_ref has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_FUNCTION_REF_LESS_DOUBLE_INDIRECTION |
Less double indirection in function_ref.
SD-6 equivalent: __cpp_lib_function_ref >= 202603L. Note that __cpp_lib_function_ref has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_FUNCTION_REF_RENAME_NONTYPE |
Rename std::nontype, and make it broadly useful.
SD-6 equivalent: __cpp_lib_function_ref >= 202511L. Note that __cpp_lib_function_ref has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_GENERATE_RANDOM |
Vector API for random number generation.
SD-6 equivalent: __cpp_lib_generate_random >= 202403L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_HARDENED_ARRAY |
Standard Library Hardening.
SD-6 equivalent: __cpp_lib_hardened_array >= 202502L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_HARDENED_BASIC_STACKTRACE |
Minor additions to C++26 standard library hardening.
SD-6 equivalent: __cpp_lib_hardened_basic_stacktrace >= 202506L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_HARDENED_BASIC_STRING |
Standard Library Hardening.
SD-6 equivalent: __cpp_lib_hardened_basic_string >= 202502L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_HARDENED_BASIC_STRING_VIEW |
Standard Library Hardening.
SD-6 equivalent: __cpp_lib_hardened_basic_string_view >= 202502L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_HARDENED_BITSET |
Standard Library Hardening.
SD-6 equivalent: __cpp_lib_hardened_bitset >= 202502L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_HARDENED_COMMON_ITERATOR |
Minor additions to C++26 standard library hardening.
SD-6 equivalent: __cpp_lib_hardened_common_iterator >= 202506L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_HARDENED_COUNTED_ITERATOR |
Minor additions to C++26 standard library hardening.
SD-6 equivalent: __cpp_lib_hardened_counted_iterator >= 202506L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_HARDENED_DEQUE |
Standard Library Hardening.
SD-6 equivalent: __cpp_lib_hardened_deque >= 202502L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_HARDENED_EXPECTED |
Standard Library Hardening.
SD-6 equivalent: __cpp_lib_hardened_expected >= 202502L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_HARDENED_FORWARD_LIST |
Standard Library Hardening.
SD-6 equivalent: __cpp_lib_hardened_forward_list >= 202502L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_HARDENED_INPLACE_VECTOR |
Standard Library Hardening.
SD-6 equivalent: __cpp_lib_hardened_inplace_vector >= 202502L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_HARDENED_LIST |
Standard Library Hardening.
SD-6 equivalent: __cpp_lib_hardened_list >= 202502L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_HARDENED_MDSPAN |
Standard Library Hardening.
SD-6 equivalent: __cpp_lib_hardened_mdspan >= 202502L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_HARDENED_OPTIONAL |
Standard Library Hardening.
SD-6 equivalent: __cpp_lib_hardened_optional >= 202502L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_HARDENED_SHARED_PTR_ARRAY |
Minor additions to C++26 standard library hardening.
SD-6 equivalent: __cpp_lib_hardened_shared_ptr_array >= 202506L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_HARDENED_SPAN |
Standard Library Hardening.
SD-6 equivalent: __cpp_lib_hardened_span >= 202502L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_HARDENED_VALARRAY |
Standard Library Hardening.
SD-6 equivalent: __cpp_lib_hardened_valarray >= 202502L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_HARDENED_VECTOR |
Standard Library Hardening.
SD-6 equivalent: __cpp_lib_hardened_vector >= 202502L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_HARDENED_VIEW_INTERFACE |
Minor additions to C++26 standard library hardening.
SD-6 equivalent: __cpp_lib_hardened_view_interface >= 202506L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_HAZARD_POINTER |
Hazard Pointers for C++26.
SD-6 equivalent: __cpp_lib_hazard_pointer >= 202306L. Note that __cpp_lib_hazard_pointer has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_HIVE |
Introduction of std::hive to the standard library.
SD-6 equivalent: __cpp_lib_hive >= 202502L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_INDIRECT |
Vocabulary Types for Composite Class Design.
SD-6 equivalent: __cpp_lib_indirect >= 202502L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_INITIALIZER_LIST |
Resolve inconsistencies in begin/end for valarray and braced initializer lists.
SD-6 equivalent: __cpp_lib_initializer_list >= 202511L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_INPLACE_VECTOR |
inplace_vector
SD-6 equivalent: __cpp_lib_inplace_vector >= 202406L. Note that __cpp_lib_inplace_vector has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_INPLACE_VECTOR_BETTER_RETURN_TYPES |
Better return types in std::inplace_vector and std::exception_ptr_cast.
SD-6 equivalent: __cpp_lib_inplace_vector >= 202603L. Note that __cpp_lib_inplace_vector has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_INPLACE_VECTOR_REMOVE_TRY_APPEND_RANGE |
Remove try_append_range from inplace_vector for now.
SD-6 equivalent: __cpp_lib_inplace_vector >= 202603L. Note that __cpp_lib_inplace_vector has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_INTEGER_SEQUENCE_EXPANSION_STATEMENTS |
Add library Support for Expansion Statements.
SD-6 equivalent: __cpp_lib_integer_sequence >= 202511L. Note that __cpp_lib_integer_sequence has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_IS_STRUCTURAL |
New reflection metafunction—
SD-6 equivalent: __cpp_lib_is_structural >= 202603L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_IS_VIRTUAL_BASE_OF |
A type trait for detecting virtual base classes.
SD-6 equivalent: __cpp_lib_is_virtual_base_of >= 202406L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_IS_WITHIN_LIFETIME |
Checking if a union alternative is active.
SD-6 equivalent: __cpp_lib_is_within_lifetime >= 202306L. Note that __cpp_lib_is_within_lifetime has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_IS_WITHIN_LIFETIME_EXTEND |
Extend std::is_within_lifetime.
SD-6 equivalent: __cpp_lib_is_within_lifetime >= 202603L. Note that __cpp_lib_is_within_lifetime has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_LINALG |
A free function linear algebra interface based on the BLAS.
SD-6 equivalent: __cpp_lib_linalg >= 202311L. Note that __cpp_lib_linalg has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_LINALG_BLAS_RANK |
Fix C++26 by making the rank-1, rank-2, rank-k, and rank-2k updates consistent with the BLAS.
SD-6 equivalent: __cpp_lib_linalg >= 202511L. Note that __cpp_lib_linalg has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_LINALG_FIX_TRANSPOSED |
Fix C++26 by adding transposed special cases for P2642 layouts.
SD-6 equivalent: __cpp_lib_linalg >= 202411L. Note that __cpp_lib_linalg has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_LINALG_OPTIMIZE_CONJUGATED |
Fix C++26 by optimizing linalg::conjugated for noncomplex value types.
SD-6 equivalent: __cpp_lib_linalg >= 202411L. Note that __cpp_lib_linalg has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_MDSPAN_DEXTENTS |
dextents Index Type Parameter
SD-6 equivalent: __cpp_lib_mdspan >= 202406L. Note that __cpp_lib_mdspan has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_NOT_FN_NTTP_CALLABLES |
Bind not_fn to NTTP callables.
SD-6 equivalent: __cpp_lib_not_fn >= 202306L. Note that __cpp_lib_not_fn has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_OBSERVABLE_CHECKPOINT |
Rename std::observable to std::observable_checkpoint, and add a feature-test macro.
SD-6 equivalent: __cpp_lib_observable_checkpoint >= 202506L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_OPTIONAL_RANGE_SUPPORT |
Give std::optional Range Support.
SD-6 equivalent: __cpp_lib_optional_range_support >= 202406L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_OPTIONAL_REFERENCE |
std::optional<T&>
SD-6 equivalent: __cpp_lib_optional >= 202506L. Note that __cpp_lib_optional has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_OUT_PTR_MORE |
Freestanding Library: inout expected span.
SD-6 equivalent: __cpp_lib_out_ptr >= 202311L. Note that __cpp_lib_out_ptr has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_PARALLEL_ALGORITHM_RANGE |
Add C++ parallel range algorithms.
SD-6 equivalent: __cpp_lib_parallel_algorithm >= 202506L. Note that __cpp_lib_parallel_algorithm has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_PARALLEL_SCHEDULER |
Parallel Scheduler.
SD-6 equivalent: __cpp_lib_parallel_scheduler >= 202506L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_PHILOX_ENGINE |
Philox as an extension of the C++ RNG engines.
SD-6 equivalent: __cpp_lib_philox_engine >= 202406L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_POLYMORPHIC |
Vocabulary Types for Composite Class Design.
SD-6 equivalent: __cpp_lib_polymorphic >= 202502L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_PRINT_EFFICIENT |
Permit an efficient implementation of std::print.
SD-6 equivalent: __cpp_lib_print >= 202403L. Note that __cpp_lib_print has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_PRINT_MORE_EFFICIENT |
std::print more types faster with less memory
SD-6 equivalent: __cpp_lib_print >= 202406L. Note that __cpp_lib_print has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_RANGES_AS_CONST_FIX_CONVERTIBILITY |
std::basic_const_iterator should follow its underlying type’s convertibility
SD-6 equivalent: __cpp_lib_ranges_as_const >= 202311L. Note that __cpp_lib_ranges_as_const has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_RANGES_AS_INPUT |
views::to_input
SD-6 equivalent: __cpp_lib_ranges_as_input >= 202502L. Note that __cpp_lib_ranges_as_input has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_RANGES_AS_INPUT_RENAME |
Rename the to_input view to as_input.
SD-6 equivalent: __cpp_lib_ranges_as_input >= 202603L. Note that __cpp_lib_ranges_as_input has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_RANGES_CACHE_LATEST |
views::cache_latest
SD-6 equivalent: __cpp_lib_ranges_cache_latest >= 202411L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_RANGES_CONCAT |
views::concat
SD-6 equivalent: __cpp_lib_ranges_concat >= 202403L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_RANGES_FILTER |
Filter View Extensions for Safer Use, Rev 3.
SD-6 equivalent: __cpp_lib_ranges_filter >= 202603L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_RANGES_INDICES |
Add std::views::indices(n).
SD-6 equivalent: __cpp_lib_ranges_indices >= 202506L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_RANGES_REMOVE_COMMON_REF_REQ |
Removing the common reference requirement from the indirectly invocable concepts.
SD-6 equivalent: __cpp_lib_ranges >= 202406L. Note that __cpp_lib_ranges has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_RANGES_RESERVE_HINT |
reserve_hint: Eagerly reserving memory for not-quite-sized lazy ranges
SD-6 equivalent: __cpp_lib_ranges_reserve_hint >= 202502L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_RATIO |
Adding the new 2022 SI prefixes.
SD-6 equivalent: __cpp_lib_ratio >= 202306L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_RAW_MEMORY_ALGORITHMS_CONSTEXPR |
Improve constexpr supprt for raw memory management.
SD-6 equivalent: __cpp_lib_raw_memory_algorithms >= 202411L. Note that __cpp_lib_raw_memory_algorithms has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_RCU |
Read-Copy Update (RCU).
SD-6 equivalent: __cpp_lib_rcu >= 202306L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_REFERENCE_WRAPPER |
Comparisons for reference_wrapper.
SD-6 equivalent: __cpp_lib_reference_wrapper >= 202403L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_REFLECTION |
Error Handling in Reflection.
SD-6 equivalent: __cpp_lib_reflection >= 202506L. Note that __cpp_lib_reflection has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_REFLECTION_CLEANUP |
Miscellaneous Reflection Cleanup.
SD-6 equivalent: __cpp_lib_reflection >= 202603L. Note that __cpp_lib_reflection has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_REFLECTION_RENAME_TO_IS_VARARG_FUNCTION |
Rename meta::has_ellipsis_parameter to meta::is_vararg_function.
SD-6 equivalent: __cpp_lib_reflection >= 202603L. Note that __cpp_lib_reflection has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_REPLACEABLE_CONTRACT_VIOLATION_HANDLER |
Wording for AT1-057.
SD-6 equivalent: __cpp_lib_replaceable_contract_violation_handler >= 202306L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_SATURATION_ARITHMETIC |
Saturation arithmetic.
SD-6 equivalent: __cpp_lib_saturation_arithmetic >= 202311L. Note that __cpp_lib_saturation_arithmetic has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_SATURATION_ARITHMETIC_RENAMING |
Renaming saturation arithmetic functions.
SD-6 equivalent: __cpp_lib_saturation_arithmetic >= 202603L. Note that __cpp_lib_saturation_arithmetic has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_SENDERS |
std::execution
SD-6 equivalent: __cpp_lib_senders >= 202406L. Note that __cpp_lib_senders has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_SENDERS_OPTIONAL |
optional variants in sender/receiver
SD-6 equivalent: __cpp_lib_senders >= 202506L. Note that __cpp_lib_senders has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_SIMD |
std::simd - Merge data-parallel types from the Parallelism TS 2
SD-6 equivalent: __cpp_lib_simd >= 202411L. Note that __cpp_lib_simd has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_SIMD_BIT |
Extend <bit> header function with overloads for std::simd.
SD-6 equivalent: __cpp_lib_simd >= 202502L. Note that __cpp_lib_simd has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_SIMD_CHUNK |
Rename simd_split to simd_chunk.
SD-6 equivalent: __cpp_lib_simd >= 202502L. Note that __cpp_lib_simd has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_SIMD_COMPLEX |
Proposal to support interleaved complex values in std::simd.
SD-6 equivalent: __cpp_lib_simd_complex >= 202502L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_SIMD_DEDUCTION_GUIDES |
Missing deduction guide from simd::mask to simd::vec.
SD-6 equivalent: __cpp_lib_simd >= 202511L. Note that __cpp_lib_simd has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_SIMD_EXTEND |
Proposal to extend std::simd with more constructors and accessors.
SD-6 equivalent: __cpp_lib_simd >= 202506L. Note that __cpp_lib_simd has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_SIMD_IOTA |
Add an iota object for simd (and more).
SD-6 equivalent: __cpp_lib_simd >= 202603L. Note that __cpp_lib_simd has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_SIMD_NAMESPACES |
Exploration of namespaces for std::simd.
SD-6 equivalent: __cpp_lib_simd >= 202502L. Note that __cpp_lib_simd has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_SIMD_PERMUTATIONS |
Proposal to extend std::simd with permutation API.
SD-6 equivalent: __cpp_lib_simd_permutations >= 202506L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_SIMD_RANGE |
std::simd is a range
SD-6 equivalent: __cpp_lib_simd >= 202506L. Note that __cpp_lib_simd has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_SMART_POINTER_OWNER_EQUALITY |
Enabling the Use of weak_ptr as Keys in Unordered Associative Containers.
SD-6 equivalent: __cpp_lib_smart_pointer_owner_equality >= 202306L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_SMART_PTR_OWNER_EQUALITY |
Enabling the Use of weak_ptr as Keys in Unordered Associative Containers.
SD-6 equivalent: __cpp_lib_smart_ptr_owner_equality >= 202306L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_SPAN_AT |
span.at()
SD-6 equivalent: __cpp_lib_span >= 202311L. Note that __cpp_lib_span has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_SPAN_INITIALIZER_LIST |
std::span over an initializer list
SD-6 equivalent: __cpp_lib_span_initializer_list >= 202311L. Note that __cpp_lib_span_initializer_list has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_SPAN_MORE |
Freestanding Library: inout expected span.
SD-6 equivalent: __cpp_lib_span >= 202311L. Note that __cpp_lib_span has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_SSTREAM_FROM_STRING_VIEW |
Interfacing stringstreams with string_view.
SD-6 equivalent: __cpp_lib_sstream_from_string_view >= 202306L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_START_LIFETIME |
Adjustments to union Lifetime Rules.
SD-6 equivalent: __cpp_lib_start_lifetime >= 202603L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_STDBIT_H |
Add new library headers from C23.
SD-6 equivalent: __cpp_lib_stdbit_h >= 202603L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_STDCKDINT_H |
Add new library headers from C23.
SD-6 equivalent: __cpp_lib_stdckdint_h >= 202603L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_STRING_SUBVIEW |
sub-string_view from string
SD-6 equivalent: __cpp_lib_string_subview >= 202506L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_STRING_VIEW_CONCAT |
Allow concatenation of std::string and std::string_view.
SD-6 equivalent: __cpp_lib_string_view >= 202403L. Note that __cpp_lib_string_view has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_SUBMDSPAN |
submdspan
SD-6 equivalent: __cpp_lib_submdspan >= 202306L. Note that __cpp_lib_submdspan has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_SUBMDSPAN_FIX |
Fix submdspan for C++26.
SD-6 equivalent: __cpp_lib_submdspan >= 202411L. Note that __cpp_lib_submdspan has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_SUBMDSPAN_FUTURE_PROOF |
Future-proof submdspan-mapping.
SD-6 equivalent: __cpp_lib_submdspan >= 202511L. Note that __cpp_lib_submdspan has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_SUBMDSPAN_PADDED |
Padded mdspan layouts.
SD-6 equivalent: __cpp_lib_submdspan >= 202403L. Note that __cpp_lib_submdspan has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_SUBMDSPAN_UPDATE |
Working Draft: Programming Languages—C++.
SD-6 equivalent: __cpp_lib_submdspan >= 202603L. Note that __cpp_lib_submdspan has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_TASK |
Add a Coroutine Task Type.
SD-6 equivalent: __cpp_lib_task >= 202506L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_TEXT_ENCODING |
Naming Text Encodings to Demystify Them.
SD-6 equivalent: __cpp_lib_text_encoding >= 202306L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_TO_CHARS_BOOL_TEST |
Test for success or failure of <charconv> functions.
SD-6 equivalent: __cpp_lib_to_chars >= 202306L. Note that __cpp_lib_to_chars has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_TO_STRING |
to_string or not to_string
SD-6 equivalent: __cpp_lib_to_string >= 202306L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_TUPLE_LIKE_COMPLEX |
Add tuple protocol to complex.
SD-6 equivalent: __cpp_lib_tuple_like >= 202311L. Note that __cpp_lib_tuple_like has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_TYPE_ORDER |
Standardized Constexpr Type Ordering.
SD-6 equivalent: __cpp_lib_type_order >= 202506L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_VALARRAY |
Resolve inconsistencies in begin/end for valarray and braced initializer lists.
SD-6 equivalent: __cpp_lib_valarray >= 202511L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP26_VARIANT_VISITOR |
Member visit for std::variant.
SD-6 equivalent: __cpp_lib_variant >= 202306L. Note that __cpp_lib_variant has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP2D_BITOPS_BETTER_SHIFTING |
Better Shifting.
SD-6 equivalent: __cpp_lib_bitops >= 202607L. Note that __cpp_lib_bitops has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP2D_BITOPS_PERMUTATIONS |
Bit permutations.
SD-6 equivalent: __cpp_lib_bitops >= 202607L. Note that __cpp_lib_bitops has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP2D_CONSTANT_WRAPPER_REVERT_STRING |
Revert string support in std::constant_wrapper.
SD-6 equivalent: __cpp_lib_constant_wrapper >= 202606L. Note that __cpp_lib_constant_wrapper has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP2D_EXPECTED_UEXPECTED |
The unexpected in std::expected.
SD-6 equivalent: __cpp_lib_expected >= 202606L. Note that __cpp_lib_expected has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP2D_HAZARD_POINTER_BATCHES |
Hazard Pointer Batches.
SD-6 equivalent: __cpp_lib_hazard_pointer >= 202606L. Note that __cpp_lib_hazard_pointer has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP2D_MAP_LOOKUP |
Better Lookups for map, unordered_map, and flat_map.
SD-6 equivalent: __cpp_lib_map_lookup >= 202606L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP2D_MDSPAN_COPY |
Copy and fill for mdspan.
SD-6 equivalent: __cpp_lib_mdspan_copy >= 202606L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP2D_POINTER_TAG_PAIR |
constexpr pointer tagging
SD-6 equivalent: __cpp_lib_pointer_tag_pair >= 202606L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP2D_SIMD_BITOPS |
std::simd overloads for bit permutations
SD-6 equivalent: __cpp_lib_simd_bitops >= 202607L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP2D_SIMD_BITOPS_BETTER_SHIFTING |
Better Shifting.
SD-6 equivalent: __cpp_lib_simd_bitops >= 202607L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP2D_THREAD_ATTRIBUTES |
Thread attributes.
SD-6 equivalent: __cpp_lib_thread_attributes >= 202606L. This token will have a value of 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP2D_TO_CHARS_FIX_FLOAT |
Fix the default floating-point representation in std::format.
SD-6 equivalent: __cpp_lib_to_chars >= 202606L. Note that __cpp_lib_to_chars has multiple values associated with it from a number of different proposals, so this token will have the value of the latest supported proposal, or 0 if the proposal described here is not supported.
| #define LBAL_LIBCPP2D_VIEW_INTERFACE |
view_interface::at()
SD-6 equivalent: __cpp_lib_view_interface >= 202606L. This token will have a value of 0 if the proposal described here is not supported.