17 Language support library [support]

17.3 Implementation properties [support.limits]

17.3.2 Header <version> synopsis [version.syn]

The header <version> supplies implementation-dependent information about the C++ standard library (e.g., version number and release date).
Each of the macros defined in <version> is also defined after inclusion of any member of the set of library headers indicated in the corresponding comment in this synopsis.
[Note 1:
Future revisions of C++ might replace the values of these macros with greater values.
— end note]
#define __cpp_­lib_­addressof_­constexpr 201603L // also in <memory> #define __cpp_­lib_­allocator_­traits_­is_­always_­equal 201411L // also in <memory>, <scoped_­allocator>, <string>, <deque>, <forward_­list>, <list>, <vector>, // <map>, <set>, <unordered_­map>, <unordered_­set> #define __cpp_­lib_­any 201606L // also in <any> #define __cpp_­lib_­apply 201603L // also in <tuple> #define __cpp_­lib_­array_­constexpr 201811L // also in <iterator>, <array> #define __cpp_­lib_­as_­const 201510L // also in <utility> #define __cpp_­lib_­assume_­aligned 201811L // also in <memory> #define __cpp_­lib_­atomic_­flag_­test 201907L // also in <atomic> #define __cpp_­lib_­atomic_­float 201711L // also in <atomic> #define __cpp_­lib_­atomic_­is_­always_­lock_­free 201603L // also in <atomic> #define __cpp_­lib_­atomic_­lock_­free_­type_­aliases 201907L // also in <atomic> #define __cpp_­lib_­atomic_­ref 201806L // also in <atomic> #define __cpp_­lib_­atomic_­shared_­ptr 201711L // also in <memory> #define __cpp_­lib_­atomic_­value_­initialization 201911L // also in <atomic>, <memory> #define __cpp_­lib_­atomic_­wait 201907L // also in <atomic> #define __cpp_­lib_­barrier 201907L // also in <barrier> #define __cpp_­lib_­bind_­front 201907L // also in <functional> #define __cpp_­lib_­bit_­cast 201806L // also in <bit> #define __cpp_­lib_­bitops 201907L // also in <bit> #define __cpp_­lib_­bool_­constant 201505L // also in <type_­traits> #define __cpp_­lib_­bounded_­array_­traits 201902L // also in <type_­traits> #define __cpp_­lib_­boyer_­moore_­searcher 201603L // also in <functional> #define __cpp_­lib_­byte 201603L // also in <cstddef> #define __cpp_­lib_­char8_­t 201907L // also in <atomic>, <filesystem>, <istream>, <limits>, <locale>, <ostream>, <string>, <string_­view> #define __cpp_­lib_­chrono 201907L // also in <chrono> #define __cpp_­lib_­chrono_­udls 201304L // also in <chrono> #define __cpp_­lib_­clamp 201603L // also in <algorithm> #define __cpp_­lib_­complex_­udls 201309L // also in <complex> #define __cpp_­lib_­concepts 202002L // also in <concepts> #define __cpp_­lib_­constexpr_­algorithms 201806L // also in <algorithm> #define __cpp_­lib_­constexpr_­complex 201711L // also in <complex> #define __cpp_­lib_­constexpr_­dynamic_­alloc 201907L // also in <memory> #define __cpp_­lib_­constexpr_­functional 201907L // also in <functional> #define __cpp_­lib_­constexpr_­iterator 201811L // also in <iterator> #define __cpp_­lib_­constexpr_­memory 201811L // also in <memory> #define __cpp_­lib_­constexpr_­numeric 201911L // also in <numeric> #define __cpp_­lib_­constexpr_­string 201907L // also in <string> #define __cpp_­lib_­constexpr_­string_­view 201811L // also in <string_­view> #define __cpp_­lib_­constexpr_­tuple 201811L // also in <tuple> #define __cpp_­lib_­constexpr_­utility 201811L // also in <utility> #define __cpp_­lib_­constexpr_­vector 201907L // also in <vector> #define __cpp_­lib_­coroutine 201902L // also in <coroutine> #define __cpp_­lib_­destroying_­delete 201806L // also in <new> #define __cpp_­lib_­enable_­shared_­from_­this 201603L // also in <memory> #define __cpp_­lib_­endian 201907L // also in <bit> #define __cpp_­lib_­erase_­if 202002L // also in <string>, <deque>, <forward_­list>, <list>, <vector>, <map>, <set>, <unordered_­map>, // <unordered_­set> #define __cpp_­lib_­exchange_­function 201304L // also in <utility> #define __cpp_­lib_­execution 201902L // also in <execution> #define __cpp_­lib_­filesystem 201703L // also in <filesystem> #define __cpp_­lib_­format 201907L // also in <format> #define __cpp_­lib_­gcd_­lcm 201606L // also in <numeric> #define __cpp_­lib_­generic_­associative_­lookup 201304L // also in <map>, <set> #define __cpp_­lib_­generic_­unordered_­lookup 201811L // also in <unordered_­map>, <unordered_­set> #define __cpp_­lib_­hardware_­interference_­size 201703L // also in <new> #define __cpp_­lib_­has_­unique_­object_­representations 201606L // also in <type_­traits> #define __cpp_­lib_­hypot 201603L // also in <cmath> #define __cpp_­lib_­incomplete_­container_­elements 201505L // also in <forward_­list>, <list>, <vector> #define __cpp_­lib_­int_­pow2 202002L // also in <bit> #define __cpp_­lib_­integer_­comparison_­functions 202002L // also in <utility> #define __cpp_­lib_­integer_­sequence 201304L // also in <utility> #define __cpp_­lib_­integral_­constant_­callable 201304L // also in <type_­traits> #define __cpp_­lib_­interpolate 201902L // also in <cmath>, <numeric> #define __cpp_­lib_­invoke 201411L // also in <functional> #define __cpp_­lib_­is_­aggregate 201703L // also in <type_­traits> #define __cpp_­lib_­is_­constant_­evaluated 201811L // also in <type_­traits> #define __cpp_­lib_­is_­final 201402L // also in <type_­traits> #define __cpp_­lib_­is_­invocable 201703L // also in <type_­traits> #define __cpp_­lib_­is_­layout_­compatible 201907L // also in <type_­traits> #define __cpp_­lib_­is_­nothrow_­convertible 201806L // also in <type_­traits> #define __cpp_­lib_­is_­null_­pointer 201309L // also in <type_­traits> #define __cpp_­lib_­is_­pointer_­interconvertible 201907L // also in <type_­traits> #define __cpp_­lib_­is_­swappable 201603L // also in <type_­traits> #define __cpp_­lib_­jthread 201911L // also in <stop_­token>, <thread> #define __cpp_­lib_­latch 201907L // also in <latch> #define __cpp_­lib_­launder 201606L // also in <new> #define __cpp_­lib_­list_­remove_­return_­type 201806L // also in <forward_­list>, <list> #define __cpp_­lib_­logical_­traits 201510L // also in <type_­traits> #define __cpp_­lib_­make_­from_­tuple 201606L // also in <tuple> #define __cpp_­lib_­make_­reverse_­iterator 201402L // also in <iterator> #define __cpp_­lib_­make_­unique 201304L // also in <memory> #define __cpp_­lib_­map_­try_­emplace 201411L // also in <map> #define __cpp_­lib_­math_­constants 201907L // also in <numbers> #define __cpp_­lib_­math_­special_­functions 201603L // also in <cmath> #define __cpp_­lib_­memory_­resource 201603L // also in <memory_­resource> #define __cpp_­lib_­node_­extract 201606L // also in <map>, <set>, <unordered_­map>, <unordered_­set> #define __cpp_­lib_­nonmember_­container_­access 201411L // also in <array>, <deque>, <forward_­list>, <iterator>, <list>, <map>, <regex>, <set>, <string>, // <unordered_­map>, <unordered_­set>, <vector> #define __cpp_­lib_­not_­fn 201603L // also in <functional> #define __cpp_­lib_­null_­iterators 201304L // also in <iterator> #define __cpp_­lib_­optional 201606L // also in <optional> #define __cpp_­lib_­parallel_­algorithm 201603L // also in <algorithm>, <numeric> #define __cpp_­lib_­polymorphic_­allocator 201902L // also in <memory> #define __cpp_­lib_­quoted_­string_­io 201304L // also in <iomanip> #define __cpp_­lib_­ranges 201911L // also in <algorithm>, <functional>, <iterator>, <memory>, <ranges> #define __cpp_­lib_­raw_­memory_­algorithms 201606L // also in <memory> #define __cpp_­lib_­remove_­cvref 201711L // also in <type_­traits> #define __cpp_­lib_­result_­of_­sfinae 201210L // also in <functional>, <type_­traits> #define __cpp_­lib_­robust_­nonmodifying_­seq_­ops 201304L // also in <algorithm> #define __cpp_­lib_­sample 201603L // also in <algorithm> #define __cpp_­lib_­scoped_­lock 201703L // also in <mutex> #define __cpp_­lib_­semaphore 201907L // also in <semaphore> #define __cpp_­lib_­shared_­mutex 201505L // also in <shared_­mutex> #define __cpp_­lib_­shared_­ptr_­arrays 201707L // also in <memory> #define __cpp_­lib_­shared_­ptr_­weak_­type 201606L // also in <memory> #define __cpp_­lib_­shared_­timed_­mutex 201402L // also in <shared_­mutex> #define __cpp_­lib_­shift 201806L // also in <algorithm> #define __cpp_­lib_­smart_­ptr_­for_­overwrite 202002L // also in <memory> #define __cpp_­lib_­source_­location 201907L // also in <source_­location> #define __cpp_­lib_­span 202002L // also in <span> #define __cpp_­lib_­ssize 201902L // also in <iterator> #define __cpp_­lib_­starts_­ends_­with 201711L // also in <string>, <string_­view> #define __cpp_­lib_­string_­udls 201304L // also in <string> #define __cpp_­lib_­string_­view 201803L // also in <string>, <string_­view> #define __cpp_­lib_­syncbuf 201803L // also in <syncstream> #define __cpp_­lib_­three_­way_­comparison 201907L // also in <compare> #define __cpp_­lib_­to_­address 201711L // also in <memory> #define __cpp_­lib_­to_­array 201907L // also in <array> #define __cpp_­lib_­to_­chars 201611L // also in <charconv> #define __cpp_­lib_­transformation_­trait_­aliases 201304L // also in <type_­traits> #define __cpp_­lib_­transparent_­operators 201510L // also in <memory>, <functional> #define __cpp_­lib_­tuple_­element_­t 201402L // also in <tuple> #define __cpp_­lib_­tuples_­by_­type 201304L // also in <utility>, <tuple> #define __cpp_­lib_­type_­identity 201806L // also in <type_­traits> #define __cpp_­lib_­type_­trait_­variable_­templates 201510L // also in <type_­traits> #define __cpp_­lib_­uncaught_­exceptions 201411L // also in <exception> #define __cpp_­lib_­unordered_­map_­try_­emplace 201411L // also in <unordered_­map> #define __cpp_­lib_­unwrap_­ref 201811L // also in <type_­traits> #define __cpp_­lib_­variant 201606L // also in <variant> #define __cpp_­lib_­void_­t 201411L // also in <type_­traits>