ents ](/w/cpp/language/template_parameters#Template_template_arguments "cpp/language/template parameters") |  201611L  |  (C++17)  |  [ P0522R0 ](https://wg21.link/P0522R0)  
` __cpp_threadsafe_static_init ` |  [ Dynamic initialization and destruction with concurrency ](/w/cpp/language/storage_duration#Static_local_variables "cpp/language/storage duration") |  200806L  |  (C++11)  |  [ N2660 ](https://wg21.link/N2660)  
` __cpp_unicode_characters ` |  [ New character types ](/w/cpp/language/types "cpp/language/types") (  char16_t  and  char32_t  )  |  200704L  |  (C++11)  |  [ N2249 ](https://wg21.link/N2249)  
` __cpp_unicode_literals ` |  [ Unicode string literals ](/w/cpp/language/string_literal "cpp/language/string literal") |  200710L  |  (C++11)  |  [ N2442 ](https://wg21.link/N2442)  
` __cpp_user_defined_literals ` |  [ User-defined literals ](/w/cpp/language/user_literal "cpp/language/user literal") |  200809L  |  (C++11)  |  [ N2765 ](https://wg21.link/N2765)  
` __cpp_using_enum ` |  [ ` using enum ` ](/w/cpp/language/enum#Using-enum-declaration "cpp/language/enum") |  201907L  |  (C++20)  |  [ P1099R5 ](https://wg21.link/P1099R5)  
` __cpp_variable_templates ` |  [ Variable templates ](/w/cpp/language/variable_template "cpp/language/variable template") |  201304L  |  (C++14)  |  [ N3651 ](https://wg21.link/N3651)  
` __cpp_variadic_templates ` |  [ Variadic templates ](/w/cpp/language/parameter_pack "cpp/language/parameter pack") |  200704L  |  (C++11)  |  [ N2242 ](https://wg21.link/N2242)  
` __cpp_variadic_using ` |  Pack expansions in [ ` using ` -declarations ](/w/cpp/language/using_declaration "cpp/language/using declaration") |  201611L  |  (C++17)  |  [ P0195R2 ](https://wg21.link/P0195R2)  
Total number of macros: 68  
  
###  [ [ edit ](/mwiki/index.php?title=cpp/feature_test&action=edit&section=3
"Edit section: Library features") ]  Library features

The following macros are defined if the header [ ` <version> `
](/w/cpp/header/version "cpp/header/version") or any of the corresponding
headers in the table below is included. Each macro expands to an integer
literal corresponding to the year and month when the corresponding feature has
been included in the working draft.

When a feature changes significantly, the macro will be updated accordingly.

[ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/utility/lib_feature_macros&action=edit)

Macro name  |  Feature  |  Value  |  Header  |  Std  |  Paper(s)   
---|---|---|---|---|---  
` __cpp_lib_adaptor_  iterator_pair_constructor ` |  Iterator pair constructors for  [ std::stack ](/w/cpp/container/stack "cpp/container/stack") and  [ std::queue ](/w/cpp/container/queue "cpp/container/queue") |  202106L  |  [ ` <queue> ` ](/w/cpp/header/queue "cpp/header/queue") [ ` <stack> ` ](/w/cpp/header/stack "cpp/header/stack") |  (C++23)  |  [ P1425R4 ](https://wg21.link/P1425R4)  
` __cpp_lib_addressof_constexpr ` |  Constexpr  [ std::addressof ](/w/cpp/memory/addressof "cpp/memory/addressof") |  201603L  |  [ ` <memory> ` ](/w/cpp/header/memory "cpp/header/memory") |  (C++17)  |  [ LWG2296 ](https://wg21.link/LWG2296)  
` __cpp_lib_algorithm_  iterator_requirements ` |  Ranges iterators as inputs to non-Ranges [ algorithms ](/w/cpp/algorithm "cpp/algorithm") |  202207L  |  [ ` <algorithm> ` ](/w/cpp/header/algorithm "cpp/header/algorithm") [ ` <memory> ` ](/w/cpp/header/memory "cpp/header/memory") [ ` <numeric> ` ](/w/cpp/header/numeric "cpp/header/numeric") |  (C++23)  |  [ P2408R5 ](https://wg21.link/P2408R5)  
` __cpp_lib_allocate_at_least ` |  Size-feedback in the Allocator interface, e.g.: [ ` std::allocator::allocate_at_least ` ](/w/cpp/memory/allocator/allocate_at_least "cpp/memory/allocator/allocate at least") , [ ` std::allocator_traits::allocate_at_least ` ](/w/cpp/memory/allocator_traits/allocate_at_least "cpp/memory/allocator traits/allocate at least") |  202302L  |  [ ` <memory> ` ](/w/cpp/header/memory "cpp/header/memory") |  (C++2