Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      C++ compiler support

      From cppreference.com
      <cpp
       
       
       
      This page is maintained as best-effort and may lag behind most recent compiler releases. If you see something is out-of-date, please help us by updating it!


      The following tables present compiler support for new C++ features. These include accepted revisions to the standard, as well as various technical specifications:

      [edit]
      [edit]
      [edit]

      Contents

      [edit]Notes

      * - hover over a cell marked with the star* to see additional pop-up notes.
      DRnn - the numbernn after "DR" denotes target C++ revision the Defect Report is applied to, e.g., DR20 → C++20.

      [edit]C++26 features

      Note that this list may change, as the draft C++26/2c standard evolves.

      [edit]

      [edit]C++26 core language features

      C++26 feature

       
      Paper(s)

       
      GCC
      Clang
      MSVC
      Apple Clang
      EDG eccp
      Intel C++
      Nvidia HPC C++ (ex PGI)*
      Nvidia nvcc
      Cray
      DR98: Removing undefined behavior from lexingP2621R3Yes3.316.0.0*
      DR98: Making non-encodable string literals ill-formedP1854R4141416.0.0*
      Unevaluated stringsP2361R61417 (partial)*
      18
      16.0.0*
      Adding@,$, and` to thebasic character setP2558R215Yes16.0.0*
      constexpr cast fromvoid*  (FTM)*P2738R11417
      DR20: On the ignorability of standard attributesP2552R315Yes
      DR11: Static storage for braced initializersP2752R314
      User-generatedstatic_assert messages  (FTM)*P2741R31417
      Placeholder variables with no name  (FTM)*P2169R41418
      Pack indexing  (FTM)*P2662R31519
      Removing deprecated arithmetic conversion on enumerationsP2864R21418
      DR11/20: Template parameter initializationP2308R1918
      Disallow binding a returned reference to atemporaryP2748R51419
      Attributes forstructured bindings  (FTM)*P0609R31519
      Erroneous behavior foruninitialized reads,[[indeterminate]] attributeP2795R5
      = delete("reason");  (FTM)*P2573R21519
      Variadicfriends  (FTM)*P2893R31520
      DR98: Clarifying rules for brace elision inaggregate initializationP3106R1Yes17
      DR20: Disallow module declarations to be macrosP3034R115
      DR11: Trivial infinite loops are not undefined behaviorP2809R31419
      constexpr placement new  (FTM)*  (FTM)*P2747R21520
      Structured binding declaration as a condition  (FTM)*P0963R3156(partial)*
      21
      Ordering ofconstraints involvingfold expressions  (FTM)*P2963R319
      Deleting a pointer to an incomplete type should be ill-formedP3144R215196.7
      Structured bindings can introduce apack  (FTM)*P1061R1021
      constexprstructured bindings and references toconstexpr variablesP2686R56.7
      constexprexceptions:[1],[2]  (FTM)*P3068R6
      Oxford variadic commaP3176R11520
      Removing deprecated array comparisonsP2865R61520
      #embed  (FTM)*P1967R141519*
      Concept and variable-template template-parameters  (FTM)*P2841R7
      Trivial relocatability  (FTM)*P2786R1321*
      Trivial unions  (FTM)*P3074R7
      Observable checkpointsP1494R5
      Contracts  (FTM)*P2900R14
       

      C++26 feature
       

      Paper(s)
      GCC
      Clang
      MSVC
      Apple Clang
      EDG eccp
      Intel C++
      Nvidia HPC C++ (ex PGI)*
      Nvidia nvcc
      Cray

      [edit]C++26 library features

      C++26 feature

       
      Paper(s)

       
      GCC libstdc++
      Clang libc++
      MSVC STL
      Apple Clang*
      Testing for success or failure of<charconv> functions  (FTM)*P2497R0141816.0.0*
      std::text_encoding: text encodings identification  (FTM)*P1885R12
      P2862R1
      14
      Arithmetic overloads ofstd::to_string andstd::to_wstring usestd::format  (FTM)*P2587R314
      Type checking format args  (FTM)*P2757R315
      Formatting pointers  (FTM)*P2510R314*17*19.40**
      Hashing support forstd::chrono value classes  (FTM)*P2592R3
      <rcu>:Read-Copy Update  (FTM)*P2545R4
      <hazard_pointer>:Hazard pointers  (FTM)*P2530R3
      ADL-proofstd::projectedP2538R114*18*19.38**16.0.0*
      constexpr stable sorting  (FTM)*P2562R11521
      Memberstd::basic_format_arg::visit()  (FTM)*P2637R31519
      Memberstd::variant::visit()  (FTM)*P2637R31518
      std::is_within_lifetime  (FTM)*P2641R4
      Extending associative containers with the remaining heterogeneous overloads  (FTM)*P2363R5
      Enabling the use ofstd::weak_ptr as keys in unordered associative containers  (FTM)*P1901R2
      Native handles in file streams  (FTM)*P1759R6141816.0.0*
      Interfacing string streams withstd::string_view  (FTM)*P2495R319
      Interfacingstd::bitset withstd::string_view  (FTM)*P2697R11816.0.0*
      Moreconstexpr for<cmath> and<complex>  (FTM)*  (FTM)*P1383R24.6 (partial)*
      Adding the new 2022 SI prefixes on ratios:std::quecto,std::ronto,std::ronna, andstd::quetta  (FTM)*P2734R01417*
      std::function_ref: type-erased callable reference  (FTM)*P0792R14
      std::copyable_function  (FTM)*P2548R616
      std::bind_front,std::bind_back, andstd::not_fn to NTTP callables  (FTM)*  (FTM)*  (FTM)*P2714R1
      std::submdspan()  (FTM)*P2630R4
      P3355R1
      Freestanding language: Optional::operator newP2013R5N/A
      Freestandingstd::char_traits,std::errc and facilities in:<charconv>,<cstdlib>,<cstring>,<cwchar>  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*P2338R4N/A
      More freestanding facilities  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*P2198R7N/A
      Saturation arithmetic  (FTM)*P0543R3141816.0.0*
      <debugging>:Debugging support  (FTM)*P2546R5
      P2810R4
      <linalg>: A free function linear algebra interface based on the BLAS  (FTM)*P1673R13
      P3050R2
      P3222R0
      Makingassert() macro user friendlyP2264R7
      Runtime format strings  (FTM)*P2918R2141816.0.0*
      std::span over an initializer list  (FTM)*P2447R6151816.0.0*
      std::span::at()  (FTM)*P2821R5141816.0.0*
      Added tuple protocol tostd::complex  (FTM)*P2819R21519
      A new specification forstd::generate_canonicalP0952R219.42*
      Removing deprecated typedefstd::allocator::is_always_equalP2868R3151816.0.0*
      Removing function overload ofstd::basic_string::reserve() that takes no argumentP2870R31816.0.0*
      Removing deprecated Unicode conversion facets (<codecvt>)P2871R31816.0.0*
      Freestanding: removingstd::strtok  (FTM)*P2937R01419.40*
      Freestanding library: partial classes  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*P2407R51419.42*
      Freestanding library:std::inout,std::expected,std::span  (FTM)*  (FTM)*  (FTM)*  (FTM)*P2833R21419.42*
      DR23:std::basic_const_iterator should follow its underlying type’s convertibility  (FTM)*P2836R1
      P2950R0
      1419.40*
      DR20:std::make_format_args now accepts only lvalue references instead of forwarding referencesP2905R2141819.40*16.0.0*
      DR20: Fix formatting of code units as integers  (FTM)*P2909R413.31819.40*16.0.0*
      views::concat  (FTM)*P2542R815
      Concatenation ofstrings andstring views  (FTM)*P2591R51519
      Enabling list-initialization foralgorithms  (FTM)*P2248R8
      P3217R0
      15
      std::ranges::generate_random  (FTM)*P1068R11
      Comparisons forstd::reference_wrapper, and constraints for comparisons ofstd::pair,std::tuple,std::optional, andstd::variant  (FTM)*  (FTM)*P2944R31419 (partial)*
      Padded mdspan layouts  (FTM)*P2642R6
      New CTAD forstd::span andstd::mdspan with integral constantsP3029R119
      Atomic maximum and minimum  (FTM)*P0493R5
      std::formatter<std::filesystem::path>  (FTM)*P2845R8
      Printing Blank Lines withstd::println()  (FTM)*P3142R014*19*19.41**
      Undeprecatestd::polymorphic_allocator::destroyP2875R41519.41*
      Removing deprecated strstreamsP2867R219
      Removing deprecatedstd::shared_ptr Atomic Access APIsP2869R4
      Removingstd::wstring_convertP2872R319
      DR23: Permit an efficient implementation ofstd::print  (FTM)*P3107R5
      P3235R3
      19.43*
      Execution control library  (FTM)*P2300R10
      P3396R0
      std::inplace_vector: dynamically-resizable vector with fixed capacity  (FTM)*P0843R14
      std::philox_engine: counter-based random number engine  (FTM)*P2075R6
      std::optional range support  (FTM)*P3168R2
      std::is_virtual_base_of: type trait for detecting virtual base classes  (FTM)*P2985R01520
      std::dims forstd::mdspan  (FTM)*P2389R219
      DR11: Formal specification of the type ofstd::ignoreP2968R2151919.42*
      DR20: Removing the common reference requirement from the indirectly invocable concepts  (FTM)*P2997R1151919.42*
      Deprecatingstd::is_trivial andstd::is_trivial_vP3247R21521
      DR20: Algorithm function objectsP3136R1Yes1419.39*14.0.3*
      std::ranges::cache_latest_view  (FTM)*P3138R515
      Constrainingstd::expectedequality operators  (FTM)*P3379R015
      std::aligned_accessor: anstd::mdspan accessor expressing pointer over-alignment  (FTM)*P2897R721
      std::is_sufficiently_aligned: checks a pointer’s alignment precondition  (FTM)*P2897R721
      std::atomic_ref::address()  (FTM)*P2835R7
      DR11/20: cv-qualified types instd::atomic andstd::atomic_refP3323R119.44*
      constexprstd::atomic andstd::atomic_ref  (FTM)*P3309R3
      constexpr forspecialized memory algorithms  (FTM)*P3508R0
      P3369R0
      15
      <stdbit.h> and<stdckdint.h>P3370R115
      <simd>:data-parallel types  (FTM)*  (FTM)*P1928R15
      P3430R3
      P3441R2
      P3287R3
      P2663R7
      P2933R4
      A utility for creatingexecution environmentsP3325R5
      constexpr for exception types, e.g.std::bad_alloc,std::bad_cast etc.  (FTM)*P3068R6
      P3378R2
      Trivial relocatability traits and operations  (FTM)*P2786R13
      Defang and deprecatestd::memory_order::consumeP3475R1
      Putstd::monostate in<utility>P0472R3152119.50*
      std::indirect  (FTM)*P3019R14
      std::polymorphic  (FTM)*P3019R14
      Moreconstexpr for containers and container adaptors:

      std::deque,std::flat_map,std::flat_multimap,std::flat_set,std::flat_multiset,std::forward_list,std::list,std::map,std::multimap,std::queue,std::priority_queue,std::set,std::multiset,std::stack,std::unordered_map,std::unordered_multimap,std::unordered_set, andstd::unordered_multiset
        (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*

      P3372R3
      constexprstd::inplace_vector for non-trivial types  (FTM)*P3074R7
      std::ranges::to_input_view  (FTM)*P3137R315
      std::ranges::approximately_sized_range andstd::ranges::reserve_hint  (FTM)*P2846R6
      <hive>: A bucket-based container that re-uses memory locations from erased elements  (FTM)*P0447R28
      <contracts>: Contract-violation handling support  (FTM)*P2900R14
      Standard library hardening  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*P3471R415(partial)*19.44*(partial)*
      Freestanding library:<algorithm>,<numeric>,<random>, (<execution>,<memory>)
        (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*
      P2976R1
      DR20: Converting contiguous iterators to pointersP3349R015
       

      C++26 feature
       

      Paper(s)
      GCC libstdc++
      Clang libc++
      MSVC STL
      Apple Clang*

      [edit]C++23 features

      [edit]

      [edit]C++23 core language features

      C++23 feature

       
      Paper(s)

       
      GCC
      Clang
      MSVC
      Apple Clang
      EDG eccp
      Intel C++
      Nvidia HPC C++ (ex PGI)*
      Nvidia nvcc
      Cray
      Literal suffix for (signed)size_t  (FTM)*P0330R8111319.43*13.1.6*6.52022.223.9
      Make() more optional forlambdasP1102R2111319.44*13.1.6*6.32022.222.5
      if consteval  (FTM)*P1938R3121419.44*14.0.0*6.32022.224.1
      Removing Garbage Collection SupportP2186R212N/A19.30*N/AN/A
      Narrowing contextual conversions instatic_assert andconstexpr ifP1401R5913 (partial)*
      14
      14.0.0*2022.220.7
      Trimming whitespaces before line splicingP2223R2YesYesYes6.72022.2Yes
      Make declaration order layout mandatedP1847R4YesYesYesYes2022.2Yes
      Removing mixed wide string literalconcatenationP2201R1YesYesYesYesYesYesYes
      Explicit object member functions (deducingthis)  (FTM)*P0847R71418
      19*
      19.32*
      (partial)*
      19.43*
      6.322.5
      auto(x) andauto{x}  (FTM)*P0849R8121514.0.3*6.42022.223.3
      #elifdef and#elifndefP2334R1121319.40*13.1.6*6.52022.223.9
      Non-literal variables (and labels and gotos) inconstexpr functions  (FTM)*P2242R3121519.43*14.0.3*6.32022.222.5
      Consistent character literal encodingP2316R2YesYes19.30*YesYes2022.2Yes
      Character sets and encodingsP2314R410YesYesYes2022.2Yes
      Extend init-statement (offor loop) to allowalias-declarationP2360R0121414.0.0*2022.2
      Multidimensionalsubscript operator  (FTM)*P2128R6121519.42*14.0.3*2022.2
      Attributes onlambdasP2173R191319.44*13.1.6*6.62022.222.5
      #warningP2437R1Yes*Yes15.0.0*6.52023.2Yes
      Remove non-encodable wide character literals and multicharacter wide character literalsP2362R3131415.0.0*6.72023.2
      Labels at the end of compound statementsP2324R2131616.0.0*6.52023.223.9
      Delimited escape sequencesP2290R3131515.0.0*6.72023.2
      Named universal character escapes  (FTM)*P2071R2131515.0.0*6.72023.2
      Relaxing someconstexpr restrictions  (FTM)*P2448R21317 (partial)
      19
      2024.0 (partial)
      Simpler implicit move  (FTM)*P2266R313136.72022.2
      static operator()  (FTM)*P1169R4131619.44*16.0.0*6.72023.2
      Requirements for optionalextended floating-point typesP1467R913N/A6.4
      Class template argument deduction from inherited constructorsP2582R114
      Attribute[[assume]]P1774R81319
      Support forUTF-8 as a portable source file encodingP2295R613*15*19.0 (Update 2)**15.0.0*2023.2
      static operator[]  (FTM)*P2589R1131619.44*16.0.0*6.72023.2
      Permittingstaticconstexpr variables inconstexpr functions  (FTM)*P2647R1131616.0.0*2023.2
      Extending the lifetime of temporaries in range-based for loop initializer  (FTM)*P2644R1
      P2718R0
      CWG2659
      1519
      Declarations and where to find themP1787R6
      DR11: Change scope oflambda trailing-return-typeP2036R3
      P2579R0
      172023.2
      DR20: Meaningful exportsP2615R11517 (partial)
      DR20:consteval needs to propagate up  (FTM)*P2564R3141716.0.0*6.72024.0
      DR98: C++ Identifier Syntax using Unicode Standard Annex 31P1949R7121414.0.0*6.42022.2
      DR11: Allow duplicateattributesP2156R1111313.1.6*6.523.9
      DR20: Adjusting the value of feature-test macro__cpp_conceptsP2493R01219.32*6.423.3
      DR98:Relax requirements onwchar_t to match existing practicesP2460R2YesYesYes15.0.0*N/A2023.2
      DR11: Using unknown pointers and references in constant expressionsP2280R41420*
      DR20: The Equality Operator You Are Looking ForP2468R2131616.0.0*2023.2
      DR20:char8_t Compatibility and Portability Fix  (FTM)*P2513R4131619.34*16.0.0*2023.2
      DR98/11: Clarify reporting ofdiagnostic directives and allowstatic_assert of non-value-dependent expressions in a template contextCWG2518131716.0*
      (partial)*
      19.40*
       

      C++23 feature
       

      Paper(s)
      GCC
      Clang
      MSVC
      Apple Clang
      EDG eccp
      Intel C++
      Nvidia HPC C++ (ex PGI)*
      Nvidia nvcc
      Cray

      [edit]C++23 library features

      C++23 feature

       
      Paper(s)

       
      GCC libstdc++
      Clang libc++
      MSVC STL
      Apple Clang*
      Stacktrace library  (FTM)*P0881R7
      P2301R1
      12 (partial)*
      14*
      19.34*
      <stdatomic.h>  (FTM)*P0943R6121519.31*14.0.3*
      std::is_scoped_enum  (FTM)*P1048R1111219.30*13.0.0*
      std::basic_string::contains(),std::basic_string_view::contains()  (FTM)*P1679R3111219.30*13.0.0*
      std::to_underlying  (FTM)*P1682R3111319.30*13.1.6*
      Relaxing requirements fortime_point<>::clockP2212R2N/AN/AN/AN/A
      Providing size feedback in the Allocator interface  (FTM)*P0401R61519.30*14.0.3*
      <spanstream>: string-stream withstd::span-based buffer  (FTM)*P0448R41219.31*
      std::out_ptr(),std::inout_ptr()  (FTM)*P1132R8141919.30*
      constexprtype_info::operator==()  (FTM)*P1328R1121719.33**
      19.34*
      15.0.0*
      Iterator pair constructors forstd::stack andstd::queue  (FTM)*P1425R4121419.31*14.0.3*
      Non-deduction context for allocators in container deduction guidesP1518R212*13*19.31**13.1.6**
      ranges::starts_with() andranges::ends_with()  (FTM)*P1659R317 (partial)*
      18
      19.31*16.0.0*
      Prohibitingstd::basic_string andstd::basic_string_view construction fromnullptrP2166R1121319.30*13.1.6*
      std::invoke_r()  (FTM)*P2136R3121719.31*15.0.0*
      Rangeconstructor forstd::basic_string_viewP1989R2111419.30*14.0.3*
      Default template arguments forstd::pair's forwardingconstructorP1951R1141419.30*14.0.3*
      Remove Garbage Collection and Reachability-Based Leak Detection (library support)P2186R2121419.30*14.0.3*
      zip:views::zip,views::zip_transform,views::adjacent, andviews::adjacent_transform  (FTM)*P2321R21315 (partial)*19.33*(partial)***
      19.37*
      14.0.3*
      Heterogeneous erasure overloads for associative containers  (FTM)*P2077R319.32*
      std::byteswap()  (FTM)*P1272R4121419.31*14.0.3*
      Printingvolatile T*P1147R111.31419.31*14.0.3*
      basic_string::resize_and_overwrite()  (FTM)*P1072R10121419.31*14.0.3*
      Monadic operations forstd::optional  (FTM)*P0798R8121419.32*14.0.3*
      std::move_only_function  (FTM)*P0288R91219.32*
      Add a conditional noexcept specification tostd::exchangeP2401R0121419.25*14.0.3*
      Requirestd::span &std::basic_string_view to beTriviallyCopyableP2251R1YesYesYesYes
      Clarifying the status of the “C headers”P2340R1YesYesYesYes
      <expected>  (FTM)*P0323R12
      P2549R1
      121619.33*15.0.0*
      constexpr for<cmath> and<cstdlib>  (FTM)*P0533R94.6 (partial)*
      std::unreachable()  (FTM)*P0627R6121519.32*14.0.3*
      Deprecatingstd::aligned_storage andstd::aligned_unionP1413R3131619.33*
      std::reference_constructs_from_temporary &std::reference_converts_from_temporary  (FTM)*P2255R213 (partial)*
      14
      21 (partial)*
      constexprstd::unique_ptr  (FTM)*P2273R3121619.33*15.0.0*
      Constructing containers and strings from ranges withranges::to(), tagged constructors, insert and assign member functions  (FTM)*  (FTM)*P1206R714 (partial)*
      15
      1719.34*15.0.0*
      Pipe support for user-defined range adaptors (ranges::range_adaptor_closure,std::bind_back)  (FTM)*  (FTM)*P2387R313 (partial)*
      14
      1919.34*
      ranges::iota(),ranges::shift_left(), andranges::shift_right()  (FTM)*  (FTM)*P2440R113 (partial)*19.34*
      views::join_with  (FTM)*P2441R21319.34*
      views::chunk andviews::slide  (FTM)*  (FTM)*P2442R11319.33*
      views::chunk_by  (FTM)*P2443R1131819.33*16.0.0*
      std::mdspan: a non-owning multidimensional array reference  (FTM)*P0009R18
      P2599R2
      P2604R0
      P2613R1
      P2763R1
      17 (partial)*
      18
      19.39*15.0.0*
      <flat_map>  (FTM)*P0429R91520
      <flat_set>  (FTM)*P1222R41521
      ranges::find_last(),ranges::find_last_if(), andranges::find_last_if_not()  (FTM)*P1223R5131919.36*
      Freestanding Library: Easy<utility>,<ranges>, and<iterator>P1642R1113*N/A
      views::stride  (FTM)*P1899R31319.34*
      Compatibility betweenstd::tuple and tuple-like objects  (FTM)*P2165R4142.9 (partial)*19.36* (partial)*
      19.37*
      partial*
      Rectifying constant iterators, sentinels, and ranges.views::as_const  (FTM)*P2278R41319.35*(partial)*
      19.36*
      Formatting Ranges  (FTM)*P2286R815 (partial)*
      15.2
      1619.37*(partial)*
      19.39*(partial)*
      19.41*(partial)*
      19.42*
      15.0.0*
      Improve default containerformatting  (FTM)*P2585R11516 (partial)*
      17
      19.42*15.0.0*
      Formatted output library<print>  (FTM)*P2093R14
      P2539R4
      1417 (partial)*
      18
      19.37*15.0.0**
      16.0.0*
      Formattingstd::thread::id andstd::stacktrace  (FTM)*P2693R11417 (partial)*19.38*15.0.0*
      constexpr for integral overloads ofstd::to_chars() andstd::from_chars()  (FTM)*P2291R3131619.34*15.0.0*
      ranges::contains() andranges::contains_subrange()  (FTM)*P2302R41318 (partial)*
      19
      19.34*16.0.0**
      Ranges fold algorithms  (FTM)*P2322R61319.35*
      views::cartesian_product  (FTM)*P2374R4
      P2540R1
      1319.37*
      Adding move-only types support for comparison concepts (equality_comparable,totally_ordered,three_way_comparable)  (FTM)*P2404R319.36*
      Ranges iterators as inputs to non-ranges algorithms  (FTM)*P2408R519.34*
      constexprstd::bitset  (FTM)*P2417R2131619.34*15.0.0*
      basic_string::substr()&&P2438R21619.34*15.0.0*
      views::as_rvalue  (FTM)*P2446R2131619.34*15.0.0*
      Standard Library Modules  (FTM)*P2465R315*17 (partial)*19.35*
      (partial)*
      19.36*
      std::forward_like()  (FTM)*P2445R1141619.34*15.0.0*
      Support exclusive mode forstd::fstream  (FTM)*P2467R1121819.36*16.0.0*
      views::repeat  (FTM)*P2474R2131719.36*15.0.0*
      Relaxing range adaptors to allow for move-only types  (FTM)*P2494R2141719.34*15.0.0*
      std::basic_string_view rangeconstructor should be explicitP2499R012.21619.34*15.0.0*
      std::generator: synchronous coroutine generator for ranges  (FTM)*P2502R2
      P2787R0
      1419.43*
      Add a conditional noexcept specification tostd::applyP2517R1101819.34*16.0.0*
      Explicit lifetime management (std::start_lifetime_as)  (FTM)*P2590R2
      P2679R2
      Clarify handling of encodings in localized formatting of chrono types  (FTM)*P2419R215*19.34**
      std::move_iterator should not always beinput_iterator  (FTM)*P2520R012.3*17*19.34**15.0.0*
      Deduction guides update forexplicit object parameter call operatorsLWG36171419.34*
      Deduction guides update forstatic operator()P1169R4131619.39*15.0.0*
      Standard names and library support forextended floating-point typesP1467R91319.37**
      Monadic operations forstd::expected  (FTM)*P2505R5131719.36*15.0.0*
      views::enumerate  (FTM)*P2164R91319.37*
      std::is_implicit_lifetime  (FTM)*P2674R120
      std::common_reference_t ofstd::reference_wrapper should be a reference type  (FTM)*  (FTM)*P2655R319.37*
      Disallowing user specialization ofstd::allocator_traitsP2652R21919.37*
      Deprecatingstd::numeric_limits::has_denormP2614R21819.37*16.0.0*
      Making Multi-Param Constructors OfviewsexplicitP2711R117 (partial)*19.36**15.0.0*
      DR20: Relaxing Ranges Just A Smidge  (FTM)*P2609R3152019.37*
      DR20: Stashing Stashing Iterators For Proper FlatteningP2770R0141819.37*
      DR17:std::visit() for classes derived fromstd::variant  (FTM)*P2162R211.31319.20**
      19.30*
      13.1.6*
      DR20: Conditionally borrowed rangesP2017R1111619.30*
      DR20: Repairinginput range adaptors andstd::counted_iteratorP2259R11219.30*(partial)*
      19.31*
      DR20:views::join should join all views of rangesP2328R111.21519.30*14.0.3*
      DR20:view does not requiredefault_initializable  (FTM)*P2325R311.31619.30*15.0.0*
      DR20: Range adaptor objects bind arguments by valueP2281R1111419.29 (16.10)*
      (partial)*
      19.31*
      14.0.3*
      DR20:constexpr forstd::optional andstd::variant  (FTM)*  (FTM)*P2231R111.3 (partial)*
      12
      13 (partial)*
      19
      19.31*13.1.6* (partial)
      DR20:views::lazy_split and redesignedviews::splitP2210R2121619.31*15.0.0*
      DR20: Fixranges::istream_viewP2432R1121619.31*15.0.0*
      DR20:view with ownership  (FTM)*P2415R2121419.31*14.0.3*
      DR20: Fixing locale handling in chrono formatters  (FTM)*P2372R3
      P2418R2
      1319.31*
      DR20: Cleaning up integer-class typesP2393R119.32*
      DR20: Compile-time format string checks; Reducing binary code size ofstd::format() family  (FTM)*P2216R31314 (partial)*
      15
      19.32*14.0.3*
      DR20: Add support for non-const-formattable types tostd::formatP2418R2131519.32*14.0.3*
      DR20:std::basic_format_stringP2508R1131519.35*14.0.3*
      DR20: Poison Pills are Too Toxic  (FTM)*P2602R2141919.36*
      DR20:std::format fill character allowancesP2572R1141719.37*
      DR20: Improvingstd::format's width estimationP2675R1141719.38*
      DR20:std::barrier's phase completion guarantees  (FTM)*P2588R319.28 (16.8)**
      19.36*
       

      C++23 feature
       

      Paper(s)
      GCC libstdc++
      Clang libc++
      MSVC STL
      Apple Clang*

      [edit]C++20 features

      [edit]

      [edit]C++20 core language features

      C++20 feature

       
      Paper(s)

       
      GCC
      Clang
      MSVC
      Apple Clang
      EDG eccp
      Intel C++
      Nvidia HPC C++ (ex PGI)*
      Nvidia nvcc
      Cray
      AllowLambda capture[=, this]P0409R28619.22*10.0.0*5.12021.120.712.011.0
      __VA_OPT__P0306R4
      P1042R1
      8 (partial)*
      10 (partial)*
      12
      919.25*11.0.3*5.12021.120.712.011.0
      Designated initializers  (FTM)*P0329R44.7 (partial)*
      8
      3.0 (partial)*
      10
      19.21*12.0.0*5.12021.120.712.011.0
      template-parameter-list for generic lambdas  (FTM)*P0428R28919.22*11.0.0*5.12021.120.712.011.0
      Default member initializers for bit-fieldsP0683R18619.25*10.0.0*5.12021.120.712.011.0
      Initializer list constructors in class template argument deductionP0702R18619.14*Yes5.02021.120.712.011.0
      const&-qualified pointers to membersP0704R18619.0 (2015)*10.0.0*5.12021.120.712.011.0
      Concepts  (FTM)*P0734R05*
      10
      1019.23*(partial)*
      19.30*
      12.0.0* (partial)6.12023.1*20.1112.011.0
      Lambdas in unevaluated contextsP0315R4913 (partial)*
      14 (partial)*
      17
      19.28 (16.8)*13.1.6* (partial)6.22023.1 (partial)
      2024.0
      20.712.0
      Three-way comparison operator  (FTM)*P0515R3108 (partial)
      10
      19.20*12.0.0*5.12021.120.712.011.0
      DR11: Simplifying implicit lambda captureP0588R1819.24*5.12021.120.712.0
      init-statements for range-based forP0614R19819.25*11.0.0*6.02021.720.1112.011.0
      Default constructible and assignable statelesslambdasP0624R29819.22*10.0.1*5.12021.120.712.011.0
      Type mismatch of defaulted special member functionsP0641R29(partial)*819.0 (2015)*(partial)*10.0.1*5.12021.120.712.011.0
      Access checking on specializationsP0692R1Yes8 (partial)
      14
      19.26*14.0.0*5.12021.120.712.0
      ADL and function templates that are not visibleP0846R09919.21*11.0.3*5.12021.120.712.011.0
      DR11: Specify whenconstexpr function definitions areneeded for constant evaluation  (FTM)*P0859R05.2 (partial)*
      9
      819.27* (partial)*
      19.31**
      11.0.0*(partial)12.011.0
      Attributes[[likely]] and[[unlikely]]P0479R591219.26*13.0.0*5.12021.720.712.0
      Maketypename more optionalP0634R391619.29 (16.10)*16.0.0*5.12023.120.712.0
      Pack-expansions inlambda init-captures  (FTM)*P0780R29919.22*11.0.3*6.12021.720.1112.011.0
      Attribute[[no_unique_address]]P0840R29919.28 (16.9)**11.0.3*5.12021.120.712.011.0
      Conditionally trivial special member functions  (FTM)*P0848R3101619.28 (16.8)*6.12021.720.1112.0
      DR17: Relaxing thestructured bindings customization point finding rulesP0961R18819.20*10.0.1*5.12021.120.712.011.0
      DR11: Relaxing therange-for loop customization point finding rulesP0962R18819.25*11.0.0*5.12021.120.712.011.0
      DR17: Allow structured bindings to accessible membersP0969R08819.20*10.0.1*5.12021.120.712.011.0
      Destroyingoperator delete  (FTM)*P0722R39619.27*10.0.0*6.12023.120.1112.011.0
      Class types inConstant template parametersP0732R2912 (partial)19.26*(partial)*
      19.28 (16.9)*
      13.0.0* (partial)6.22023.1 (partial)21.312.0
      Deprecate implicitcapture ofthis via[=]P0806R29719.22*10.0.1*5.120.712.011.0
      explicit(bool)  (FTM)*P0892R29919.24*11.0.3*5.12021.120.712.011.0
      Integratingfeature-test macrosP0941R253.419.15* (partial)
      19.20*
      Yes5.02021.120.712.011.0
      Prohibit aggregates with user-declared constructorsP1008R19819.20*10.0.1*5.12021.120.712.011.0
      constexprvirtual function  (FTM)*P1064R09919.28 (16.9)*11.0.3*5.12021.120.712.011.0
      Consistency improvements for comparisonsP1120R0108 (partial)
      10
      19.22*12.0.0*5.12023.120.712.011.0
      char8_t  (FTM)*P0482R697*19.22*10.0.0*5.12021.120.712.011.0
      std::is_constant_evaluated()  (FTM)*P0595R29919.25*11.0.3*5.119.121.112.011.0
      constexprtry-catch blocksP1002R19819.25*10.0.1*5.12023.120.712.011.0
      Immediate functions (consteval)  (FTM)*P1073R310 (partial)*
      11
      11 (partial)
      14 (partial)*
      17
      19.28 (16.8)*
      (partial)*

      19.29 (16.10)*
      11.0.3* (partial)
      15.0.0*
      5.12021.120.712.0
      Nested inline namespacesP1094R29819.27*10.0.1*5.12021.120.712.011.0
      Yet another approach forconstraineddeclarationsP1141R2101019.26* (partial)
      19.28 (16.9)*
      12.0.5*6.12023.120.1112.011.0
      Signed integers are two's complementP1236R199Yes11.0.3*N/A2023.1*yes*12.011.0
      dynamic_cast and polymorphictypeid inconstant expressionsP1327R110919.28 (16.9)*11.0.3*5.12021.120.712.011.0
      Changing the active member of a union insideconstexpr  (FTM)*P1330R09919.10*11.0.3*5.12021.120.712.011.0
      Coroutines  (FTM)*  (FTM)*P0912R5
      LWG3393
      108 (partial)
      17 (partial)*
      19.0 (2015)* (partial)
      19.10**
      19.28 (16.8)*
      10.0.1* (partial)5.12021.123.3*12.0 (host code only)
      Parenthesizedinitialization of aggregates  (FTM)*P0960R3101619.28 (16.8)*16.0.0*5.12021.120.712.0
      DR11: Array size deduction innew-expressionsP1009R211919.27*11.0.3*5.12021.120.712.011.0
      Modules  (FTM)*P1103R311 (partial)8 (partial)19.0 (2015)* (partial)
      19.10**
      19.28 (16.8)*
      10.0.1* (partial)2023.1 (partial)
      Stronger Unicode requirementsP1041R4
      P1139R2
      10Yes19.0 (2015)**
      19.26**
      YesN/A2023.1*Yes12.011.0
      <=> != ==P1185R2101019.22*12.0.0*5.12021.120.712.011.0
      DR11: Explicitly defaulted functions with different exception specificationsP1286R210919.28 (16.8)*11.0.3*5.12021.120.712.011.0
      Lambda capture and storage class specifiers of structured bindingsP1091R3
      P1381R1
      108 (partial)
      16
      19.11**
      19.24**
      16.0.0*5.12021.120.712.0
      Permit conversions to arrays of unknown boundP0388R4101419.27*14.0.0*6.02021.520.1112.0
      constexpr container operations  (FTM)*P0784R7101019.28 (16.9)*12.0.0*6.02021.520.1112.011.0
      Deprecating some uses ofvolatileP1152R4101019.27*12.0.0*6.02021.520.1112.011.0
      constinit  (FTM)*P1143R2101019.29 (16.10)*12.0.0*6.12021.720.1112.011.0
      Deprecate comma operator in subscriptsP1161R310919.25*11.0.3*6.02021.720.1112.011.0
      [[nodiscard]] with messageP1301R410919.25*11.0.3*6.02021.520.1112.011.0
      Trivial default initialization inconstexpr functionsP1331R2101019.27*12.0.0*6.12021.720.1112.011.0
      Unevaluatedasm-declaration inconstexpr functionsP1668R1101019.28 (16.9)*12.0.0*6.12021.720.1112.011.0
      using enum  (FTM)*P1099R5111319.24*13.1.6*6.32023.122.512.0
      SynthesizingThree-way comparison for specified comparison categoryP1186R3111019.24*12.0.0*6.02021.520.1112.011.0
      DR17:[[nodiscard]] for constructorsP1771R110919.24*11.0.3*6.02021.520.1112.011.0
      class template argument deduction for alias templates  (FTM)*P1814R0101919.27*6.523.912.0
      class template argument deduction for aggregates  (FTM)*P1816R0
      P2082R1
      10*
      11*
      1719.27*6.32023.1 (partial)*
      2024.1
      23.312.0
      DR11:Implicit move for more local objects and rvalue referencesP1825R011*1319.24*13.1.6*6.02021.520.1112.0
      Allow defaulting comparisons by valueP1946R0101019.25*12.0.0*6.12021.720.1112.011.0
      Removestd::weak_equality andstd::strong_equalityP1959R0101019.25*12.0.0*6.12021.720.1112.011.0
      Inconsistencies with constant template parameters  (FTM)*P1907R110 (partial)
      11
      18 (partial)*19.26*13.1.6* (partial)6.22023.1 (partial)21.312.0
      DR98: Pseudo-destructors end object lifetimesP0593R61111Yes12.0.5*N/A2023.1*Yes12.011.0
      DR11: Converting fromT* tobool should be considered narrowingP1957R210*
      11*
      1119.27*12.0.5*6.112.011.0
       

      C++20 feature
       

      Paper(s)
      GCC
      Clang
      MSVC
      Apple Clang
      EDG eccp
      Intel C++
      Nvidia HPC C++ (ex PGI)*
      Nvidia nvcc
      Cray

      [edit]C++20 library features

      C++20 feature

       
      Paper(s)

       
      GCC libstdc++
      Clang libc++
      MSVC STL
      Apple Clang*
      std::endian  (FTM)*P0463R18719.22*10.0.0*
      Extendingstd::make_shared() to support arrays  (FTM)*P0674R1121519.27*14.0.3*
      Floating-point atomic  (FTM)*P0020R6101819.22*16.0.0*
      Synchronized buffered (std::basic_osyncstream)  (FTM)*P0053R7111819.29 (16.10)*
      constexpr for<algorithm> and<utility>  (FTM)*P0202R3108 (partial)
      12
      19.26*10.0.1* (partial)
      13.0.0*
      Moreconstexpr for<complex>  (FTM)*P0415R197 (partial)
      16
      19.27*10.0.0* (partial)
      15.0.0*
      Makestd::memory_order a scoped enumerationP0439R09919.25*11.0.3*
      Stringprefix andsuffix checking:string(_view)::starts_with /ends_with  (FTM)*P0457R29619.21*10.0.0*
      Library support foroperator<=><compare>  (FTM)*P0768R1107 (partial)
      12 (partial)*
      17
      19.20* (partial)
      19.28 (16.9)*
      13.0.0*
      std::remove_cvref  (FTM)*P0550R29619.20*10.0.0*
      [[nodiscard]] in thestandard libraryP0600R197 (partial)
      16
      19.13* (partial)
      19.22*
      10.0.0* (partial)
      15.0.0*
      Usingstd::move innumeric algorithmsP0616R091219.23*13.0.0*
      Utility to convert a pointer to a raw pointer  (FTM)*P0653R28619.22*Yes
      Atomicstd::shared_ptr andstd::weak_ptr  (FTM)*P0718R21219.27*
      std::span  (FTM)*P0122R710719.26*10.0.0*
      Calendar andTime zone  (FTM)*P0355R711 (partial)*
      13 (partial)*
      14
      7 (partial)
      19 (partial)*
      19.29 (16.10)*10.0.0* (partial)
      <version>P0754R29719.22*10.0.0*
      Comparing unordered containersP0809R0YesYes16.0*Yes
      ConstexprIterator requirements  (FTM)*  (FTM)*P0858R091219.11*13.0.0*
      std::basic_string::reserve() should not shrinkP0966R111819.25*10.0.1*
      Atomic Compare-And-Exchange with padding bitsP0528R31319.28 (16.8)*
      std::atomic_ref  (FTM)*P0019R8101919.28 (16.8)*
      contains() member function of associative containers, e.g.std::map::contains()P0458R291319.21*13.1.6*
      DR11: Guaranteed copy elision forpiecewise constructionP0475R19Yes19.29 (16.10)*Yes
      std::bit_cast()  (FTM)*P0476R2111419.27*14.0.3*
      Integral power-of-2 operations:

      std::bit_ceil(),std::bit_floor(),std::bit_width(),std::has_single_bit()  (FTM)*

      P0556R3
      P1956R1
      9*
      10*
      9*
      12*
      19.25**
      19.27**
      19.28 (16.8)*
      11.0.3**
      13.0.0**
      Improving the return value of erase-like algorithms  (FTM)*P0646R191019.21*12.0.0*
      std::destroying_delete_t  (FTM)*P0722R39919.27*11.0.3*
      std::is_convertible  (FTM)*P0758R19919.23*11.0.3*
      Addstd::shift_left/right to<algorithm>  (FTM)*P0769R2101219.21*13.0.0*
      Constexpr forstd::swap() andswap related functionsP0879R0101319.26*13.1.6*
      std::type_identity  (FTM)*P0887R19819.21*10.0.1*
      Concepts library  (FTM)*P0898R3101319.23*13.1.6*
      constexprcomparison operators forstd::arrayP1023R010819.27*10.0.1*
      std::unwrap_ref_decay andstd::unwrap_reference  (FTM)*P0318R19819.21*10.0.1*
      std::bind_front()  (FTM)*P0356R591319.25*13.1.6*
      std::reference_wrapper for incomplete typesP0357R39819.26*10.0.1*
      Fixingoperator>>(basic_istream&, CharT*)P0487R111819.23*10.0.1*
      Library support forchar8_t  (FTM)*P0482R698 (partial)
      16
      19.22*10.0.1* (partial)
      15.0.0*
      Utility functions to implementuses-allocatorconstructionP0591R491619.29 (16.10)*15.0.0*
      DR17:std::variant andstd::optional should propagate copy/move trivialityP0602R48.3819.11*10.0.1*
      DR17: A sanestd::variant converting constructorP0608R310919.29 (16.10)**
      19.42**
      11.0.3*
      std::function's move constructor should benoexceptP0771R17.2619.22*Yes
      TheOneRangesProposal  (FTM)*P0896R41013 (partial)
      15*
      19.29 (16.10)*14.0.3*
      Heterogeneous lookup forunordered associative containers  (FTM)*P0919R3
      P1690R1
      111219.23* (P0919R3)
      19.25* (P1690R1)
      13.0.0*
      <chrono>zero(),min(), andmax() should benoexceptP0972R09819.14*10.0.1*
      constexpr instd::pointer_traits  (FTM)*P1006R19819.26*10.0.1*
      std::assume_aligned()  (FTM)*P1007R39*
      11
      1519.28 (16.9)*14.0.3*
      Smart pointer creation with default initialization (e.g.make_unique_for_overwrite)  (FTM)*P1020R1
      P1973R1
      11*
      12*
      1619.28 (16.9)*15.0.0*
      Miscconstexpr bits  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*P1032R1101319.28 (16.8)*13.1.6*
      Remove comparison operators ofstd::spanP1085R210819.26*10.0.1*
      Make stateful allocator propagation more consistent foroperator+(basic_string)P1165R1101519.26*14.0.3*
      Consistent container erasure, e.g.std::erase(std::vector), orstd::erase_if(std::map)  (FTM)*P1209R0
      P1115R3
      9*
      10*
      8*
      11*
      19.25**
      19.27**
      10.0.1**
      12.0.5**
      Standard library header unitsP1502R11119.29 (16.10)*
      polymorphic_allocator<> as a vocabulary type  (FTM)*P0339R691619.28 (16.9)*15.0.0*
      std::execution::unseq  (FTM)*P1001R291719.28 (16.8)*
      std::lerp() andstd::midpoint()  (FTM)*P0811R39919.23* (partial)
      19.28 (16.8)*
      11.0.3*
      Usability enhancements forstd::spanP1024R3109*
      14
      19.26*11.0.3*
      DR17: Makestd::create_directory() intuitiveP1164R18.31219.20*13.0.0*
      std::ssize() and unsigned extent forstd::span  (FTM)*P1227R210919.25*11.0.3*
      Traits for (un)bounded arrays  (FTM)*P1357R19919.25*11.0.3*
      std::to_array()  (FTM)*P0325R4101019.25*12.0.0*
      Efficient access tostd::basic_stringbuf’s bufferP0408R7111719.29 (16.10)*15.0.0*
      Layout-compatibility andpointer-interconvertibility traits  (FTM)*  (FTM)*P0466R51219.29 (16.10)**
      Bit operations:std::

      rotl(),rotr(),countl_zero(),countl_one(),countr_zero(),countr_one(),popcount()  (FTM)*

      P0553R49919.25**
      19.28 (16.8)*
      11.0.3*
      Mathematical constants  (FTM)*P0631R8101119.25*12.0.5*
      Text formatting  (FTM)*P0645R101314**
      17
      19.29 (16.10)*15.0.0*
      std::stop_token andstd::jthread  (FTM)*P0660R101017
      (partial)*

      20*
      19.28 (16.9)*
      constexprstd::allocator and related utilities  (FTM)*P0784R7101219.29 (16.10)*13.0.0*
      constexprstd::string  (FTM)*P0426R1
      P1032R1
      P0980R1
      121519.29 (16.10)*
      19.30**
      14.0.3*
      constexprstd::vector  (FTM)*P1004R2121519.29 (16.10)*
      19.30**
      14.0.3*
      Inputrange adaptorsP1035R7101619.29 (16.10)*15.0.0*
      constexprstd::invoke() and related utilitiesP1065R2101219.28 (16.8)*13.0.0*
      Atomic waiting and notifying,std::counting_semaphore,std::latch andstd::barrier  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*  (FTM)*P1135R6111119.28 (16.9)*13.1.6*
      std::source_location  (FTM)*P1208R61115*
      (partial)
      16
      19.29 (16.10)*15.0.0*
      Adding<=> to the standard libraryP1614R21014*
      (partial)
      17*
      (partial)
      19
      19.29 (16.10)*13.1.6* (partial)
      constexpr default constructor ofstd::atomic andstd::atomic_flag  (FTM)*P0883R2101319.26*13.1.6*
      constexpr fornumeric algorithms  (FTM)*P1645R1101219.26*13.0.0*
      Safe integral comparisons  (FTM)*P0586R2101319.27*13.1.6*
       

      C++20 feature
       

      Paper(s)
      GCC libstdc++
      Clang libc++
      MSVC STL
      Apple Clang*

      [edit]Older standards

      [edit]
      [edit]
      [edit]

      [edit]See also

      Feature testing(C++20) A set of preprocessor macros to test the corresponding to C++ language and library features
      C documentation forcompiler support
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/compiler_support&oldid=177796"

      [8]ページ先頭

      ©2009-2025 Movatter.jp