t_ceil() ` ](/w/cpp/numeric/bit_ceil "cpp/numeric/bit ceil") , [ ` std::bit_floor() ` ](/w/cpp/numeric/bit_floor "cpp/numeric/bit floor") , [ ` std::bit_width() ` ](/w/cpp/numeric/bit_width "cpp/numeric/bit width") , [ ` std::has_single_bit() ` ](/w/cpp/numeric/has_single_bit "cpp/numeric/has single bit") |  [ P0556R3 ](https://wg21.link/P0556R3) [ P1956R1 ](https://wg21.link/P1956R1) |  9   
(P0556R3)  
10 (P1956R1)  |  9 (P0556R3)   
12 (P1956R1)  |  19.25*  (P0556R3)  *    
19.27*  (P1956R1)  *  
19.28 (16.8)*  |  11.0.3*  (P0556R3)   
13.0.0*  (P1956R1)  |  |  |   
Improving the return value of erase-like algorithms  |  [ P0646R1 ](https://wg21.link/P0646R1) |  9  |  10  |  19.21*  |  12.0.0*  |  |  |   
[ ` std::destroying_delete ` ](/w/cpp/memory/new/destroying_delete_t "cpp/memory/new/destroying delete t") |  [ P0722R3 ](https://wg21.link/P0722R3) |  9  |  9  |  19.27*  |  11.0.3*  |  |  |   
[ ` std::is_nothrow_convertible ` ](/w/cpp/types/is_convertible "cpp/types/is convertible") |  [ P0758R1 ](https://wg21.link/P0758R1) |  9  |  9  |  19.23*  |  11.0.3*  |  |  |   
Add [ ` std::shift_left/right ` ](/w/cpp/algorithm/shift "cpp/algorithm/shift") to [ ` <algorithm> ` ](/w/cpp/header/algorithm "cpp/header/algorithm") |  [ P0769R2 ](https://wg21.link/P0769R2) |  10  |  12  |  19.21*  |  13.0.0*  |  |  |   
Constexpr for  [ std::swap() ](/w/cpp/algorithm/swap "cpp/algorithm/swap") and ` swap ` related functions  |  [ P0879R0 ](https://wg21.link/P0879R0) |  10  |  13  |  19.26*  |  13.1.6*  |  |  |   
[ ` std::type_identity ` ](/w/cpp/types/type_identity "cpp/types/type identity") |  [ P0887R1 ](https://wg21.link/P0887R1) |  9  |  8  |  19.21*  |  10.0.1*  |  |  |   
[ Concepts library ](/w/cpp/concepts "cpp/concepts") |  [ P0898R3 ](https://wg21.link/P0898R3) |  10  |  13  |  19.23*  |  13.1.6*  |  |  |   
` constexpr ` [ comparison operators ](/w/cpp/container/array/operator_cmp "cpp/container/array/operator cmp") for  [ std::array ](/w/cpp/container/array "cpp/container/array") |  [ P1023R0 ](https://wg21.link/P1023R0) |  10  |  8  |  19.27*  |  10.0.1*  |  |  |   
[ ` std::unwrap_ref_decay ` and ` std::unwrap_reference ` ](/w/cpp/utility/functional/unwrap_reference "cpp/utility/functional/unwrap reference") |  [ P0318R1 ](https://wg21.link/P0318R1) |  9  |  8  |  19.21*  |  10.0.1*  |  |  |   
[ ` std::bind_front() ` ](/w/cpp/utility/functional/bind_front "cpp/utility/functional/bind front") |  [ P0356R5 ](https://wg21.link/P0356R5) |  9  |  13  |  19.25*  |  13.1.6*  |  |  |   
[ std::reference_wrapper ](/w/cpp/utility/functional/reference_wrapper "cpp/utility/functional/reference wrapper") for incomplete types  |  [ P0357R3 ](https://wg21.link/P0357R3) |  9  |  8  |  19.26*  |  10.0.1*  |  |  |   
Fixing [ ` operator>>(basic_istream&, CharT*) ` ](/w/cpp/io/basic_istream/operator_gtgt2 "cpp/io/basic istream/operator gtgt2") |  [ P0487R1 ](https://wg21.link/P0487R1) |  11  |  8  |  19.23*  |  10.0.1*  |  |  |   
Library support for [ ` char8_t ` ](/w/cpp/language/types#char8_t "cpp/language/types") |  [ P0482R6 ](https://wg21.link/P0482R6) |  9  |  8 (partial)   
16  |  19.22*  |  10.0.1*  (partial)   
15.0.0*  |  |  |   
[ Utility functions ](/w/cpp/memory/uses_allocator_construction_args "cpp/memory/uses allocator construction args") to implement [ uses-allocator ](/w/cpp/memory/make_obj_using_allocator "cpp/memory/make obj using allocator") [ construction ](/w/cpp/memory/uninitialized_construct_using_allocator "cpp/memory/uninitialized construct using allocator") |  [ P0591R4 ](https://wg21.link/P0591R4) |  9  |  16  |  19.29 (16.10)*  |  15.0.0*  |  |  |   
DR17:  [ std::variant ](/w/cpp/utility/variant "cpp/utility/variant") and  [ std::optional ](/w/cpp/utility/optional "cpp/utility/optional") should propagate copy/move triviality  |  [ P0602R4 ](https://wg21.link/P0602R4) |  8.3  |  8  |  19.11*  |  10.0.1*  |  |  |   
A sane  [ std::variant ](/w/cpp/utility/variant "cpp/utility/variant") converting constructor