](/w/cpp/memory/shared_ptr/make_shared "cpp/memory/shared ptr/make shared") |  201707L  |  [ ` <memory> ` ](/w/cpp/header/memory "cpp/header/memory") |  (C++20)  |  [ P0674R1 ](https://wg21.link/P0674R1)  
` __cpp_lib_shared_ptr_weak_type ` |  [ ` shared_ptr::weak_type ` ](/w/cpp/memory/shared_ptr "cpp/memory/shared ptr") |  201606L  |  [ ` <memory> ` ](/w/cpp/header/memory "cpp/header/memory") |  (C++17)  |  [ P0163R0 ](https://wg21.link/P0163R0)  
` __cpp_lib_shared_timed_mutex ` |  [ std::shared_timed_mutex ](/w/cpp/thread/shared_timed_mutex "cpp/thread/shared timed mutex") |  201402L  |  [ ` <shared_mutex> ` ](/w/cpp/header/shared_mutex "cpp/header/shared mutex") |  (C++14)  |  [ N3891 ](https://wg21.link/N3891)  
` __cpp_lib_shift ` |  [ ` std::shift_left ` ](/w/cpp/algorithm/shift "cpp/algorithm/shift") and [ ` std::shift_right ` ](/w/cpp/algorithm/shift "cpp/algorithm/shift") |  201806L  |  [ ` <algorithm> ` ](/w/cpp/header/algorithm "cpp/header/algorithm") |  (C++20)  |  [ P0769R2 ](https://wg21.link/P0769R2)  
std::ranges::shift_left  and  std::ranges::shift_right  |  202202L  |  [ ` <algorithm> ` ](/w/cpp/header/algorithm "cpp/header/algorithm") |  (C++23)  |  [ P2440R1 ](https://wg21.link/P2440R1)  
` __cpp_lib_smart_  ptr_for_overwrite ` |  Smart pointer creation with default initialization (  [ std::allocate_shared_for_overwrite ](/w/cpp/memory/shared_ptr/allocate_shared "cpp/memory/shared ptr/allocate shared") ,  [ std::make_shared_for_overwrite ](/w/cpp/memory/shared_ptr/make_shared "cpp/memory/shared ptr/make shared") ,  [ std::make_unique_for_overwrite ](/w/cpp/memory/unique_ptr/make_unique "cpp/memory/unique ptr/make unique") )  |  202002L  |  [ ` <memory> ` ](/w/cpp/header/memory "cpp/header/memory") |  (C++20)  |  [ P1020R1 ](https://wg21.link/P1020R1)   
[ P1973R1 ](https://wg21.link/P1973R1)  
` __cpp_lib_smart_  ptr_owner_equality ` |  Enabling the use of  [ std::weak_ptr ](/w/cpp/memory/weak_ptr "cpp/memory/weak ptr") as keys in [ unordered associative containers ](/w/cpp/container#Unordered_associative_containers "cpp/container") |  202306L  |  [ ` <memory> ` ](/w/cpp/header/memory "cpp/header/memory") |  (C++26)  |  [ P1901R2 ](https://wg21.link/P1901R2)  
` __cpp_lib_source_location ` |  Source-code information capture (  [ std::source_location ](/w/cpp/utility/source_location "cpp/utility/source location") )  |  201907L  |  [ ` <source_location> ` ](/w/cpp/header/source_location "cpp/header/source location") |  (C++20)  |  [ P1208R6 ](https://wg21.link/P1208R6)  
` __cpp_lib_span ` |  [ ` std::span ` ](/w/cpp/container/span "cpp/container/span") |  202002L  |  [ ` <span> ` ](/w/cpp/header/span "cpp/header/span") |  (C++20)  |  [ P0122R7 ](https://wg21.link/P0122R7)   
[ LWG3274 ](https://wg21.link/LWG3274)  
[ P1024R3 ](https://wg21.link/P1024R3)  
[ P1976R2 ](https://wg21.link/P1976R2)  
std::span::at  |  202311L  |  [ ` <span> ` ](/w/cpp/header/span "cpp/header/span") |  (C++26)  |  [ P2821R5 ](https://wg21.link/P2821R5)  
Making parts of  std::span  freestanding  |  202311L  |  [ ` <span> ` ](/w/cpp/header/span "cpp/header/span") |  (C++26)  |  [ P2833R2 ](https://wg21.link/P2833R2)  
` __cpp_lib_span_  initializer_list ` |  Constructing  std::span  from an initializer list  |  202311L  |  [ ` <span> ` ](/w/cpp/header/span "cpp/header/span") |  (C++26)  |  [ P2447R6 ](https://wg21.link/P2447R6)  
` __cpp_lib_spanstream ` |  [ ` std::spanbuf ` ](/w/cpp/io/basic_spanbuf "cpp/io/basic spanbuf") , [ ` std::spanstream ` ](/w/cpp/io/basic_spanstream "cpp/io/basic spanstream") |  202106L  |  [ ` <spanstream> ` ](/w/cpp/header/spanstream "cpp/header/spanstream") |  (C++23)  |  [ P0448R4 ](https://wg21.link/P0448R4)  
` __cpp_lib_ssize ` |  [ ` std::ssize ` ](/w/cpp/iterator/size "cpp/iterator/size") and unsigned [ ` std::span::size ` ](/w/cpp/container/span/size "cpp/container/span/size") |  201902L  |  [ ` <iterator> ` ](/w/cpp/header/iterator "cpp/header/iterator") |  (C++20)  |  [ P1227R2 ](https://wg