/ranges") and  [ std::counted_iterator ](/w/cpp/iterator/counted_iterator "cpp/iterator/counted iterator") |  [ P2259R1 ](https://wg21.link/P2259R1) |  12  |  |  19.30*  (partial)*    
19.31*  |  |  |  |   
DR20: [ ` views::join ` ](/w/cpp/ranges/join_view "cpp/ranges/join view") should join all views of ranges  |  [ P2328R1 ](https://wg21.link/P2328R1) |  11.2  |  15  |  19.30*  |  14.0.3*  |  |  |   
DR20: [ ` view ` ](/w/cpp/ranges/view "cpp/ranges/view") does not require [ ` default_initializable ` ](/w/cpp/concepts/default_initializable "cpp/concepts/default initializable") |  [ P2325R3 ](https://wg21.link/P2325R3) |  11.3  |  16  |  19.30*  |  15.0.0*  |  |  |   
DR20: Range adaptor objects bind arguments by value  |  [ P2281R1 ](https://wg21.link/P2281R1) |  11  |  14  |  19.29 (16.10)*    
(partial)*  
19.31*  |  14.0.3*  |  |  |   
DR20: [ ` constexpr ` ](/w/cpp/language/constexpr "cpp/language/constexpr") for  [ std::optional ](/w/cpp/utility/optional "cpp/utility/optional") and  [ std::variant ](/w/cpp/utility/variant "cpp/utility/variant") |  [ P2231R1 ](https://wg21.link/P2231R1) |  11.3 (partial)*    
12  |  13  (partial)*  |  19.31*  |  13.1.6*  (partial)  |  |  |   
DR20: [ ` views::lazy_split ` ](/w/cpp/ranges/lazy_split_view "cpp/ranges/lazy split view") and redesigned [ ` views::split ` ](/w/cpp/ranges/split_view "cpp/ranges/split view") |  [ P2210R2 ](https://wg21.link/P2210R2) |  12  |  16  |  19.31*  |  15.0.0*  |  |  |   
DR20: Fix  [ ranges::istream_view ](/w/cpp/ranges/basic_istream_view "cpp/ranges/basic istream view") |  [ P2432R1 ](https://wg21.link/P2432R1) |  12  |  16  |  19.31*  |  15.0.0*  |  |  |   
DR20: [ ` view ` ](/w/cpp/ranges/view "cpp/ranges/view") with ownership  |  [ P2415R2 ](https://wg21.link/P2415R2) |  12  |  14  |  19.31*  |  14.0.3*  |  |  |   
DR20: Fixing locale handling in chrono formatters  |  [ P2372R3 ](https://wg21.link/P2372R3) |  13  |  |  19.31*  |  |  |  |   
DR20: Cleaning up integer-class types  |  [ P2393R1 ](https://wg21.link/P2393R1) |  |  |  19.32*  |  |  |  |   
DR20: [ ` std::format() ` ](/w/cpp/utility/format/format "cpp/utility/format/format") improvements  |  [ P2216R3 ](https://wg21.link/P2216R3) |  13  |  14 (partial)*    
15  |  19.32*  |  14.0.3*  |  |  |   
DR20: Add support for non-const-formattable types to  [ std::format ](/w/cpp/utility/format/format "cpp/utility/format/format") |  [ P2418R2 ](https://wg21.link/P2418R2) |  13  |  15  |  19.32*  |  14.0.3*  |  |  |   
DR20: [ ` std::basic_format_string ` ](/w/cpp/utility/format/basic_format_string "cpp/utility/format/basic format string") |  [ P2508R1 ](https://wg21.link/P2508R1) |  13  |  15  |  19.35*  |  14.0.3*  |  |  |   
DR20: Poison Pills are Too Toxic  |  [ P2602R2 ](https://wg21.link/P2602R2) |  14  |  19  |  19.36*  |  |  |  |   
DR20:  [ std::format ](/w/cpp/utility/format/format "cpp/utility/format/format") fill character allowances  |  [ P2572R1 ](https://wg21.link/P2572R1) |  14  |  17  |  19.37*  |  |  |  |   
DR20: Improving  [ std::format ](/w/cpp/utility/format/format "cpp/utility/format/format") 's width estimation  |  [ P2675R1 ](https://wg21.link/P2675R1) |  14  |  17  |  19.38*  |  |  |  |   
DR20:  [ std::barrier ](/w/cpp/thread/barrier "cpp/thread/barrier") 's phase completion guarantees  |  [ P2588R3 ](https://wg21.link/P2588R3) |  |  |  19.36*  |  |  |  |   
  
  
C++23 feature  |    
  
Paper(s)  |  GCC libstdc++  |  Clang libc++  |  MSVC STL  |  Apple Clang*  |  IBM Open XL C/C++ for AIX*  |  Sun/Oracle C++*  |  Embarcadero C++ Builder*   
  
##  [ [ edit
](/mwiki/index.php?title=cpp/compiler_support&action=edit&section=4 "Edit
section: C++20 features") ]  C++20 features

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

###  [ [ edit
](/mwiki/index.php?title=Template:cpp/compiler_support/20&action=edit&section=T-1
"Template:cpp/compiler support/20") ]  C++20 core language features

C++20 feature  
  
|  Paper(s)