Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

C++23

From Wikipedia, the free encyclopedia
Computer programming language
This article needs to beupdated. Please help update this article to reflect recent events or newly available information.(March 2024)
C++ language revisions

C++23, formallyISO/IEC 14882:2024,[1] is the currentopen standard for theC++ programming language that followsC++20. The final draft of this version is N4950.[2][3]

In February 2020, at the final meeting forC++20 in Prague, an overall plan for C++23 was adopted:[4][5] planned features for C++23 were library support forcoroutines, amodular standard library, executors, and networking.

The first WG21 meeting focused on C++23 was intended to take place inVarna in early June 2020, but was cancelled due to theCOVID-19 pandemic,[6][7] as was the November 2020 meeting inNew York[8][7] and the February 2021 meeting inKona, Hawaii.[8] All meetings until November 2022 were virtual while the November 2022 meeting until the final meeting in February 2023 was hybrid.[8] The standard was technically finalized by WG21 at the hybrid meeting inIssaquah in February 2023.[9]

Modern "Hello, world" Example

[edit]

After many library changes applied to the working draft, the new"Hello, world" program will be:[1]

importstd;intmain(){std::println("Hello, world!");}

Features

[edit]

Changes that have been accepted into C++23 include:

Language

[edit]
  • explicitthis object parameter[10]
  • if consteval[11]
  • multidimensional subscript operator[12]
  • static call and subscript operators and static lambdas[13][14]
  • simplifying implicit move[15]
  • auto(x) andauto{x}[16]
  • new preprocessor directives:
  • extending the lifetime of some temporaries in range-based for loop[19]
  • new standard attribute[[assume(expression)]][20]
  • class template argument deduction from inherited constructors[21]
  • labels at the end of the compound statement[22]
  • alias declarations in init-statements[23]
  • literal suffixes forstd::size_t and the corresponding signed type[24]
  • extended floating-point types with literals (conditionally supported)[25]
  • optional() from nullarylambda expressions[26]
  • attributes on lambda expressions[27]
  • constexpr changes:
    • non-literal variables, labels, andgotos inconstexpr functions[28]
    • allowingstatic andthread_local variables that are usable in constant expressions inconstexpr functions[29]
    • constexpr function does not need its return type and parameter types to be literal type
    • it is now possible to write aconstexpr function for which no invocation satisfies the requirements of a core constant expression[30]
  • narrowing contextual conversions tobool instatic_assert andif constexpr[31]
  • trimming whitespaces before line splicing[32]
  • make declaration order layout mandated[33]
  • delimited escape sequences[34]
  • named universal character escapes[35]
  • text encoding changes:
    • support for UTF-8 as a portable source file encoding[36]
    • consistent character literal encoding[37]
    • character sets and encodings[38]

Library

[edit]

Standard Library Module Support

[edit]

Coroutine Library Support

[edit]
  • synchronous coroutinestd::generator for ranges[40]

General Utilities Support

[edit]
  • result typestd::expected[41]
  • monadic operations forstd::optional[42] andstd::expected[43]
  • utility functionstd::to_underlying to get the underlying value of enum[44]
  • move-only callable wrapperstd::move_only_function[45]
  • std::forward_like[46]
  • std::invoke_r[47]
  • std::bind_back[48]
  • std::byteswap[49]
  • std::unreachable: a function to markunreachable code[50]
  • madestd::tuple compatible with othertuple-like objects[51]
  • std::basic_common_reference specialization forstd::reference_wrapper yielding reference types[52]
  • adding default arguments forstd::pair's forwarding constructor[53]

Compile-time Support

[edit]
  • constexpr support for:
    • std::type_info::operator==[54]
    • std::bitset[55]
    • std::unique_ptr[56]
    • for some<cmath> functions[57]
    • for integral overloads ofstd::to_chars andstd::from_chars[58]
  • metaprogramming utilities:
    • type traitsstd::is_scoped_enum,[59]std::is_implicit_lifetime,[60]std::reference_constructs_from_temporary, andstd::reference_converts_from_temporary.[61]
  • adding move-only types support for comparison concepts[62]

Iterators, Ranges, and Algorithm Support

[edit]
  • new range conversion functionstd::ranges::to[63]
  • new constrained ranges algorithm:
    • std::ranges::starts_with
    • std::ranges::ends_with[64]
    • std::ranges::contains
    • std::ranges::contains_subrange[65]
    • std::ranges::find_last and other variants[66]
    • rangified versions ofiota,shift_left, andshift_right[67]
    • range fold algorithms[68]
  • newstd::ranges::range_adaptor_closure, a helper for defining user-defined range adaptor closures[48]
  • new range adaptors:
    • std::views::zip and other variants
    • std::views::adjacent and other variants[69]
    • std::views::join_with[70]
    • std::views::slide
    • std::views::chunk[71]
    • std::views::chunk_by[72]
    • std::views::as_rvalue[73]
    • std::views::as_const[74]
    • std::views::repeat[75]
    • std::views::stride[76]
    • std::views::cartesian_product[77]
    • std::views::enumerate[78]
  • rectifying constant iterators, sentinels, and ranges, that is,std::ranges::cbegin and other similar utilities returning constant iterators should be fully guaranteed even for shallow-const views (such asstd::span)[74]
  • ranges iterators as inputs to non-ranges algorithms[79]
  • relaxing range adaptors to allow for move only types[80]
  • making multi-param constructors of some viewsexplicit[81]

Memory Management Support

[edit]
  • std::out_ptr andstd::inout_ptr for C interoperability[82]
  • std::allocate_at_least andstd::allocator::allocate_at_least[83]
  • explicit lifetime management functionstd::start_lifetime_as for implicit-lifetime types[84]
  • disallowing user specialization ofstd::allocator_traits[85]

String and Text Processing Support

[edit]
  • new member functions and changes in string types:
    • std::basic_string_view::contains andstd::basic_string::contains[86]
    • disabling construction fromnullptr forstd::basic_string andstd::basic_string_view[87]
    • explicit range constructor forstd::basic_string_view[88]
    • std::basic_string::resize_and_overwrite[89]
    • rvalue reference overload ofstd::basic_string::substr for efficient slicing[90]
  • formatting ranges, tuples, escaped presentation of characters and strings,std::thread::id, and stacktraces.[91][92][93]

Diagnostic Support

[edit]
  • stacktrace library[94]

I/O Support

[edit]
  • formatted output functionsstd::print andstd::println from new header<print>[95]
  • spanstream library (std::span-based string stream) from new header<spanstream>[96]
  • a support for exclusive mode instd::fstreams[97]
  • std::basic_ostream::operator<<(const volatile void*)[98]

Containers Support

[edit]
  • multidimensional-spanstd::mdspan[99][100][101][102]
  • constructability and assignability of containers from other compatible ranges[63]
  • flat set and flat map container adapters[103][104]
  • non-deduction context for allocators in container deduction guides[105]
  • heterogeneous erasure overloads for associative containers[106]
  • allowing iterator pair construction in stack and queue[107]
  • requiringstd::span andstd::basic_string_view to be trivially copyable[108]

C-Compatibility Support

[edit]
  • new header<stdatomic.h>[109]

Language defect reports

[edit]
  • C++ identifier syntax using Unicode Standard Annex 31[110]
  • allowing duplicate attributes[111]
  • changing scope of lambda trailing return type[112]
  • making overloaded comparison operators less breaking change[113]
  • undeprecating volatile compound assignments[114][115]
  • fixing the compatibility and portability ofchar8_t[116]
  • relaxing requirements onwchar_t to match existing practices[117]
  • allowing some pointers and references ofthis or unknown origin in constant expressions[118]
  • introduction of immediate-escalating functions promoted to immediate functions[119]
  • allowingstatic_assert(false) in uninstantiated template contexts

Library defect reports

[edit]
  • changes in ranges library:
    • conditionally borrowed ranges[120]
    • repairing input range adaptors andstd::counted_iterator[121]
    • relaxing the constraint onstd::ranges::join_view[122]
    • renamedstd::ranges::split_view tostd::ranges::lazy_split_view and newsplit_view[123]
    • removedstd::default_initializable constraint from conceptstd::ranges::view[124]
    • view with ownership and newstd::ranges::owning_view[125]
    • fixedstd::ranges::istream_view[126]
  • changes in text formatting library:
    • std::basic_format_string[127]
    • compile-time format string checks
    • reducing binary code size ofstd::format_to[128]
    • fixing locale handling in chrono formatters[129]
    • improving width estimation[130] and fill character allowances ofstd::format[131]
    • use of forwarding references in format arguments to allow non-const-formattable types[132]
  • fullyconstexprstd::variant andstd::optional[133]
  • supporting types derived fromstd::variant instd::visit[134]

Removed features and deprecation

[edit]

Removed features:

  • Garbage Collection Support and (strict) Pointer Safety[135] (meaning onlyrelaxed pointer safety is to be relied upon[136]). This minimal garbage collection support (and pointer safety, needed for it), was added to C++11 but no compilers have ever supported it so the support was removed in C++23.[137] However, that doesn't mean many GC implementations haven't been used, and continue to be used with C++, such asBoehm GC (and it can also just be used for leak detection in leak detection, when in debug mode), and such GC is often implemented in C++, for other languages to use.
  • Mixed wide-string literal concatenation.[138]
  • Non-encodable wide character literals and multicharacter wide character literals.[139]

Deprecated features:

  • std::aligned_storage andstd::aligned_union[140]
  • std::numeric_limits::has_denorm[141]

Reverted deprecated features:

  • Use of comma operator in subscript expressions was no longer deprecated but the semantics has been changed to support overloadable n-adicoperator[].
  • C headers (The corresponding<*.h> headers for compatibility with C)

Published as Technical Specifications

[edit]

Compiler support

[edit]
  • Clang progressively added partial C++23 support from 2021 in version 13 through to version 18 in 2024, available through the option-std=c++23.[143]
  • GCC added partial, experimental C++23 support in 2021 in version 11 through the option-std=c++2b or-std=c++23 It also has an option to enable GNU extensions in addition to the experimental C++23 support,-std=gnu++2b.[144]

History

[edit]

In the absence of face-to-face WG21 meetings, the following changes were applied after several virtual WG21 meetings, where they were approved by straw polls.

The following were added after the virtual WG21 meeting of 9 November 2020, where they were approved by straw polls:[145]

  • Literal suffixes forstd::size_t and the corresponding signed type
  • A member functioncontains forstd::basic_string andstd::basic_string_view, to check whether or not the string contains a given substring or character
  • Astacktrace library (<stacktrace>), based onBoost.Stacktrace
  • A type traitstd::is_scoped_enum
  • The header<stdatomic.h>, for interoperability withC atomics

After the virtual WG21 meeting of 22 February 2021, following features are added where they were approved by straw polls:[146]

  • Removing unnecessary empty parameter list() fromlambda expressions.
  • Repairing input range adaptors andcounted_iterator.
  • Relax the requirements fortime_point::clock.[147]
  • std::visit for classes that are derived fromstd::variant.
  • Locks lock lockables.[148]
  • Conditionally borrowed ranges.
  • std::to_underlying.

After the summer 2021 ISO C++ standards plenary virtual meeting of June 2021, new features and defect reports were approved by straw polls:[149]

  • Consteval if (ifconsteval).
  • Narrowing contextual conversions tobool.
  • Allowing duplicate attributes.
  • std::span-based string-stream (<spanstream>).
  • std::out_ptr() andstd::inout_ptr().
  • constexpr forstd::optional,std::variant, andstd::type_info::operator==.
  • Iterators pair constructors forstd::stack (stack) andstd::queue (queue).
  • Few changes of the ranges library:
    • Generalizedstarts_with andends_with for arbitrary ranges.
    • Renamedsplit_view tolazy_split_view and newsplit_view.
    • Relaxing the constraint onjoin_view.
    • Removingdefault_initializable constraint from conceptview.
    • Range constructor forstd::basic_string_view.
  • Prohibitingstd::basic_string andstd::basic_string_view construction fromnullptr.
  • std::invoke_r.
  • Improvements onstd::format.
  • Adding default arguments forstd::pair's forwarding constructor.

After the autumn 2021 ISO C++ standards plenary virtual meeting of October 2021, new features and defect reports were approved by straw polls:[150]

  • Non-literal variables, labels, and gotos inconstexpr functions, but still ill-formed to evaluate them at compile-time.
  • Explicitthis object parameter.
  • Changes on character sets and encodings.
  • New preprocessors:#elifdef and#elifndef. Both directives were added toC23 (C language update) andGCC 12.[151]
  • Allowing alias declarations in init-statement.
  • Overloading multidimensional subscript operator (e.g.arr[1,2]).
  • Decay copy in language:auto(x) orauto{x}.
  • Changes in text formatting library:
    • Fixing locale handling in chrono formatters.
    • Use of forwarding references in format arguments to allowstd::generator-like types.
  • Addition of type aliasstd::pmr::stacktrace which is equivalent tostd::basic_stacktrace<std::pmr::polymorphic_allocator>.[152]
  • Changes in ranges library:
    • Refined definition of a view.
    • Replacing function templatestd::ranges::istream_view with alias templatesstd::ranges::istream_view,std::ranges::wistream_view, and customization point objectstd::views::istream.
    • zip range adaptor family:
      • zip_view
      • zip_transform_view
      • adjacent_view (andstd::views::pairwise being equivalent tostd::views::adjacent<2>)
      • adjacent_transform_view (andstd::views::pairwise_transform being equivalent tostd::views::adjacent_transform<2>)
  • std::move_only_function.
  • Monadic operations forstd::optional.
  • Member function templatestd::basic_string::resize_and_overwrite.
  • Printingvolatile pointers (volatileT*).
  • std::byteswap.
  • Heterogeneous erasure overloads for associative containers.
  • Every specialization ofstd::span andstd::basic_string_view is trivially copyable.
  • Adding conditionalnoexcept specifications tostd::exchange.[153]
  • Revamped specification and use of integer-class types.[154]
  • ClarifyC headers. "The headers arenot useful in code that isonly required to be valid C++. Therefore, the C headers should be provided by the C++ standard library as a fully-supported, not deprecated part, but they should also be discouraged for use in code that is not polyglot interoperability code. [..] This proposal makes the C headers no longer deprecated, so there is no formal threat of future removal. The effective discouragement to use the C headers in pure C++ code is now spelled out explicitly as normative discouragement."[155]

After the virtual WG21 meeting of 7 February 2022, the following features are added where they were approved by straw polls:[156]

  • Allowed attributes on the function call operator of a lambda
  • std::expected
  • constexpr forcmath andcstdlib
  • Function to markunreachable code
  • ranges::to
  • A type trait to detect reference binding to temporary
  • Makingstd::unique_ptrconstexpr
  • Pipe support for user-defined range adaptors
  • ranges::iota,ranges::shift_left andranges::shift_right
  • views::join_with
  • Windowing range adaptors:views::chunk andviews::slide
  • views::chunk_by

After the virtual WG21 meeting of 25 July 2022, the following features and defect reports are added where they were approved by straw polls:[157]

  • Made rewriting equality in expressions less of a breaking change.
  • Reverted the deprecation of bitwise assignment tovolatile variables.
  • Added the#warning preprocessor directive.
  • Removed non-encodable widecharacter literals and multicharacter wide character literals.
  • Allowedlabels to appear at the end of compound statements.
  • Addedescape sequences delimited with curly braces for octal and hexadecimal numbers and universal character names.
  • Allowedconstexpr functions to never be constant expressions.
  • Simplified some implicit move rules fromC++20 and allowed implicit move when returning an rvalue reference.
  • Add a way to specifyunicode characters by name. For example,U'\N{LATINCAPITALLETTERAWITHMACRON}'// Equivalent to U'\u0100'
  • Allowedoperator() and lambdas to bestatic.
  • Allowed thethispointer andreferences of unknown origin to appear in constant expressions.
  • Allowed implementations to define extendedfloating-point types in addition to the three standard floating-point types. Added the type aliasesstd::float16_t,std::float32_t,std::float64_t,std::float128_t,std::bfloat16_t for these extended types accessible through the header<stdfloat>, their corresponding literal suffixesf16f32f64f128bf16orF16F32F64F128BF16 and added overloads to various standard library functions that take floats as arguments.
  • Added the[[assume(expression)]] attribute which allows the compiler to assume the provided expression is true to allow optimizations.
  • Made support forUTF-8 source files mandatory, providing a portable encoding for source files.
  • Allowed arrays ofchar andunsignedchar to be initialized with UTF-8string literals.
  • Removed the requirement thatwchar_t can encode all characters of the extended character set, in effect allowing UTF-16 to be used for wide string literals.
  • Addedstd::mdspan, a multidimensional array view analogous tostd::span.
  • flat_map andflat_set were added to the standard library.
  • Added thestd::print andstd::println functions for printing formatted text tostdout.
  • Provide the named modulesstd andstd.compat for importing the standard library.
  • Added support for exclusive modefstreams, analogous to the "x" flag infopen.
  • Allowedstd::format to handle ranges, tuples, and other containers.
  • Addedstd::forward_like.
  • Madestd::string::substr usemove semantics.
  • Addedstd::generator which implements a coroutine generator that modelsstd::ranges::input_range
  • views::cartesian_product,views::repeat,views::stride,views::as_const,views::as_rvalue.
  • Added new algorithms:ranges::find_last,ranges::contains, and ranges fold algorithms.
  • Madestd::tuple compatible with othertuple-like objects.
  • Explicit lifetime management for implicit-lifetime types.
  • Madestd::bitset and integral overloads ofstd::to_chars andstd::from_charsconstexpr-compatible.
  • Adding move-only types support for comparison concepts.
  • Ranges iterators as inputs to non-ranges algorithms.
  • Relaxing range adaptors to allow for move-only types.

After the hybrid WG21 meeting of 7 November 2022, the following features and defect reports are added where they were approved by straw polls:[158]

  • Allowedoperator[] to bestatic.
  • Allowedstatic andthread_local variables to appear inconstexpr functions if they are usable in constant expressions.
  • consteval propagates upwards, that is, certain existingconstexpr functions becomeconsteval functions when those functions can already only be invoked during compile time.
  • Extended the lifetime of temporaries that appear in thefor-range-initializer of a range-basedfor loop to cover the entire loop.
  • Reverted the deprecation of (all, not just bitwise)compound assignment tovolatile variables.
  • Monadic functions forstd::expected.
  • Synchronize the output ofstd::print with the underlying stream if the native Unicode API is used.[159]

After the final hybrid WG21 meeting of 6-11 February 2023, the following features and defect reports are added where they were approved by straw polls:[160]

  • Referencing the Unicode Standard.[161]
  • Stashing stashing iterators for proper flattening.[162]
  • views::enumerate
  • making multi-param constructors of views explicit
  • relaxing ranges just a smidge
  • escaping improvements instd::format
  • improvingstd::format's width estimation
  • std::format fill character allowances
  • formattingthread::id andstacktrace
  • A type traitstd::is_implicit_lifetime
  • std::common_reference_t ofstd::reference_wrapper should be a reference type
  • disallowing user specialization ofstd::allocator_traits
  • std::pmr::generator
  • deprecatingstd::numeric_limits::has_denorm
  • std::barrier's phase completion guarantees

External links

[edit]

References

[edit]
  1. ^"ISO/IEC 14882:2024 Programming languages — C++".iso.org.
  2. ^"Working Draft, Standard for Programming Language C++"(PDF).Open Standards. ISO/IEC. 2023-05-10.Archived(PDF) from the original on Feb 16, 2024.
  3. ^"N4951 Editors' Report: Programming Languages - C++".Open Standards. 2023-05-10.Archived from the original on 2023-06-05.
  4. ^Dusíková, Hana (2019-11-06)."N4817: 2020 Prague Meeting Invitation and Information"(PDF).Open Standards.Archived(PDF) from the original on 2019-12-29. Retrieved2020-02-13.
  5. ^Voutilainen, Ville (2019-11-25)."To boldly suggest an overall plan for C++23".Open Standards.Archived from the original on 2019-12-24. Retrieved2020-02-13.
  6. ^Lelbach, Bryce Adelstein; Winters, Titus; Fracassi, Fabio; Baker, Billy; Liber, Nevin; Bastien, JF; Stone, David; Ballo, Botond; Keane, Erich; Honermann, Tom (2020-04-20)."P2145R0: Evolving C++ Remotely".Open Standards.Archived from the original on Feb 12, 2024.
  7. ^abSutter, Herb (29 July 2020)."Business Plan and Convener's Report: ISO/IEC JTC1/SC22/WG21 (C++)"(PDF).
  8. ^abc"Upcoming Meetings, Past Meetings : Standard C++".isocpp.org.
  9. ^"C++23 "Pandemic Edition" is complete (Trip report: Winter ISO C++ standards meeting, Issaquah, WA, USA)".herbsutter.com. 13 February 2023.
  10. ^Gašper Ažman; Sy Brand; Ben Deane; Barry Revzin (2021-07-12)."Deducing this".
  11. ^Barry Revzin; Richard Smith; Andrew Sutton; Daveed Vandevoorde (2021-03-22)."if consteval".
  12. ^Mark Hoemmen; Daisy Hollman; Corentin Jabot; Isabella Muerte; Christian Trott (2021-09-14)."Multidimensional subscript operator"(PDF).
  13. ^"static operator()". 2022-04-08.
  14. ^"static operator[]"(PDF). 2022-11-11.
  15. ^"Simpler implicit move". 2022-03-23.
  16. ^Zhihao Yuan (2021-07-12)."auto(x): decay-copy in the language".
  17. ^Melanie Blower (2021-04-30)."Add support for preprocessing directives elifdef and elifndef"(PDF).
  18. ^Aaron Ballman (2022-01-13)."Support for #warning"(PDF).
  19. ^"Wording for P2644R1 Fix for Range-based for Loop". 2022-11-11.
  20. ^"Portable assumptions"(PDF). 2022-04-22.
  21. ^Timur Doumler (2022-05-20)."Wording for class template argument deduction from inherited constructors"(PDF).
  22. ^"Labels at the end of compound statements (C compatibility)"(PDF). 2022-01-13.
  23. ^Jens Maurer (2021-04-13)."Extend init-statement to allow alias-declaration".
  24. ^JeanHeyd Meneide; Rein Halbersma (2019-11-24)."Literal Suffix for (signed) size_t".
  25. ^"Extended floating-point types and standard names". 2022-04-22.
  26. ^Alex Christensen; JF Bastien (2020-12-11)."P1102R2: Down with ()!".
  27. ^"Attributes on Lambda-Expressions"(PDF).
  28. ^Ville Voutilainen (2021-07-12)."Non-literal variables (and labels and gotos) in constexpr functions".
  29. ^"Permittingstatic constexpr variables inconstexpr functions". 2022-11-07.
  30. ^"Relaxing some constexpr restrictions". 2022-01-27.
  31. ^Andrzej Krzemieński (2021-04-12)."Narrowing contextual conversions to bool".
  32. ^Corentin Jabot (2021-04-13)."Trimming whitespaces before line splicing"(PDF).
  33. ^Pal Balog (2021-04-02)."Make declaration order layout mandated"(PDF).
  34. ^"Delimited escape sequences"(PDF). 2022-02-25.
  35. ^"Named universal character escapes". 2022-03-25.
  36. ^"Support for UTF-8 as a portable source file encoding"(PDF). 2022-07-01.
  37. ^Corentin Jabot (2021-09-14)."Consistent character literal encoding"(PDF).
  38. ^Jens Maurer (2021-09-21)."Character sets and encodings".
  39. ^"Standard Library Modules std and std.compat"(PDF).
  40. ^"(std::generator: Synchronous Coroutine Generator for Ranges)"(PDF).
  41. ^Vicente Botet; JF Bastien; Jonathan Wakely (2022-01-07)."std::expected".
  42. ^Sy Brand (2021-04-27)."Monadic operations for std::optional".
  43. ^Jeff Garland (2022-09-28)."P2505R5 Monadic Functions forstd::expected".
  44. ^JeanHeyd Meneide (2021-01-22)."std::to_underlying for enumerations".
  45. ^Matt Calabrese; Ryan McDougall (2021-07-09)."move_only_function".
  46. ^Gašper Ažman (2022-05-13)."std::forward_like"(PDF).
  47. ^Zhihao Yuan (2020-04-29)."invoke_r".
  48. ^abBarry Revzin (2021-12-17)."Pipe support for user-defined range adaptors".
  49. ^Isabella Muerte; Corentin Jabot (2021-09-17)."Byteswapping for fun&&nuf".
  50. ^Melissa Mears; Jens Maurer (2021-10-15)."Function to mark unreachable code"(PDF).
  51. ^Corentin Jabot (2022-07-15)."Compatibility between tuple, pair and tuple-like objects"(PDF).
  52. ^Hui Xie; S. Levent Yilmaz; Tim Song (2023-02-07)."common_reference_t of reference_wrapper Should Be a Reference Type".
  53. ^"Wording for P2644R1 Fix for Range-based for Loop". 2022-11-11.
  54. ^Peter Dimov (2021-05-01)."Making std::type_info::operator== constexpr".
  55. ^Daniil Goncharov (2022-06-25)."A more constexpr bitset"(PDF).
  56. ^Andreas Fertig (2021-11-06)."Making std::unique_ptr constexpr"(PDF).
  57. ^Edward J. Rosten; Oliver J. Rosten (2021-11-12)."constexpr for <cmath> and <cstdlib>"(PDF).
  58. ^Daniil Goncharov; Alexander Karaev (2021-09-18)."Add Constexpr Modifiers to Functions to_chars and from_chars for Integral Types in <charconv> Header"(PDF).
  59. ^Juan Alday (2020-10-12)."A proposal for a type trait to detect scoped enumerations"(PDF).
  60. ^Timur Doumler; Vittorio Romeo (2022-11-11)."A trait for implicit lifetime types"(PDF).
  61. ^Tim Song (2021-10-13)."A type trait to detect reference binding to temporary".
  62. ^Justin Bassett (2022-07-02)."Move-only types for equality_comparable_with, totally_ordered_with, and three_way_comparable_with"(PDF).
  63. ^abCorentin Jabot; Eric Niebler; Casey Carter (2022-01-21)."Conversions from ranges to containers"(PDF).
  64. ^Christopher Di Bella (2021-02-19)."starts_with and ends_with".
  65. ^Christopher Di Bella (2021-04-16)."std::ranges::contains".
  66. ^Zach Laine (2022-06-17)."find_last"(PDF).
  67. ^Tim Song (2021-12-05)."ranges::iota, ranges::shift_left, and ranges::shift_right".
  68. ^Barry Revzin (2022-04-22)."ranges::fold".
  69. ^Tim Song (2021-06-11)."zip".
  70. ^Barry Revzin (2022-01-28)."views::join_with".
  71. ^Tim Song (2021-12-05)."Windowing range adaptors: views::chunk and views::slide".
  72. ^Tim Song (2021-11-19)."views::chunk_by".
  73. ^Barry Revzin (2022-02-14)."views::as_rvalue".
  74. ^abBarry Revzin (2022-06-17)."cbegin should always return a constant iterator".
  75. ^Michał Dominiak (2022-07-13)."views::repeat".
  76. ^Christopher Di Bella; Tim Song (2022-07-08)."stride_view".
  77. ^Sy Brand; Michał Dominiak (2022-07-13)."views::cartesian_product".
  78. ^Corentin Jabot (2022-12-07)."views::enumerate"(PDF).
  79. ^David Olsen (2022-04-22)."Ranges iterators as inputs to non-Ranges algorithms".
  80. ^Michał Dominiak (2022-07-13)."Relaxing range adaptors to allow for move only types".
  81. ^Ville Voutilainen (2022-11-12)."Making multi-param constructors of views explicit".
  82. ^JeanHeyd Meneide; Todor Buyukliev; Isabella Muerte (2021-04-15)."out_ptr - a scalable output pointer abstraction".
  83. ^Jonathan Wakely; Chris Kennelly (2021-01-22)."Providing size feedback in the Allocator interface".
  84. ^Timur Doumler; Richard Smith (2022-07-15)."Explicit lifetime management"(PDF).
  85. ^Pablo Halpern (2023-02-08)."Disallow User Specialization of allocator_traits".
  86. ^Wim Leflere; Paul Fee (2020-06-13)."string contains function".
  87. ^Yuriy Chernyshov (2020-09-06)."A Proposal to Prohibit std::basic_string and std::basic_string_view construction from nullptr".
  88. ^Corentin Jabot (2021-03-17)."Range constructor forstd::string_view 2: Constrain Harder"(PDF).
  89. ^Chris Kennelly; Mark Zeren (2021-09-14)."basic_string::resize_and_overwrite".
  90. ^"std::string::substr() &&".
  91. ^"Formatting Ranges". 16 May 2022.
  92. ^Barry Revzin (2022-07-15)."Improve default container formatting".
  93. ^Corentin Jabot; Victor Zverovich (2023-02-09)."Formatting thread::id and stacktrace"(PDF).
  94. ^Alexey Gorgurov; Antony Polukhin (2020-09-16)."A Proposal to add stacktrace library".
  95. ^"Formatted output".
  96. ^Peter Sommerlad (2021-02-26)."A strstream replacement using span<charT> as buffer"(PDF).
  97. ^"Support exclusive mode for fstreams".
  98. ^Bryce Adelstein Lelbach (2021-09-25)."Printing volatile Pointers".
  99. ^"MDSPAN". 13 July 2022.
  100. ^"index_type & size_type in mdspan"(PDF).
  101. ^"mdspan: renamepointer andcontiguous". 15 June 2022.
  102. ^"Add the missingempty tomdspan".
  103. ^"A Standard flat_map"(PDF).
  104. ^"A Standard flat_set"(PDF).
  105. ^Arthur O'Dwyer; Mike Spertus (2021-03-14)."Stop overconstraining allocators in container deduction guides".
  106. ^Konstantin Boyarinov; Sergey Vinogradov; Ruslan Arutyunyan (2020-12-15)."Heterogeneous erasure overloads for associative containers".
  107. ^Corentin Jabot (2021-03-05)."Iterators pair constructors for stack and queue"(PDF).
  108. ^Nevin Liber (2021-03-19)."Require span & basic_string_view to be TriviallyCopyable"(PDF).
  109. ^Hans-J. Boehm (2020-10-23)."P0943R6: Support C atomics in C++".
  110. ^Steve Downey; Zach Laine; Tom Honermann; Peter Bindels; Jens Maurer (2021-04-12)."C++ Identifier Syntax using Unicode Standard Annex 31".
  111. ^Erich Keane (2020-07-02)."Allow Duplicate Attributes"(PDF).
  112. ^Barry Revzin (2021-09-14)."Change scope of lambda trailing-return-type".
  113. ^"The Equality Operator You Are Looking For". 2022-01-13.
  114. ^"De-deprecating volatile compound operations"(PDF).
  115. ^"Core Language Working Group NB comment resolutions for the November, 2022 meeting : 2654. Un-deprecation of compound volatile assignments".
  116. ^"char8_t Compatibility and Portability Fix". 2022-06-17.
  117. ^"Relax requirements onwchar_t to match existing practices"(PDF). 2022-07-15.
  118. ^"Using unknown pointers and references in constant expressions". 8 April 2022.
  119. ^"consteval needs to propagate up". 2022-11-11.
  120. ^Barry Revzin (2020-02-19)."Conditionally borrowed ranges".
  121. ^Tim Song (2021-01-12)."Repairing input range adaptors and counted_iterator".
  122. ^Tim Song (2021-05-06)."join_view should join all views of ranges".
  123. ^Barry Revzin (2021-03-05)."Superior String Splitting".
  124. ^Barry Revzin (2021-05-14)."Views should not be required to be default constructible".
  125. ^Barry Revzin; Tim Song (2021-08-15)."What is a view?".
  126. ^Nicolai Josuttis (2021-09-24)."Fix istream_view"(PDF).
  127. ^Barry Revzin (2022-01-18)."Expose std::basic-format-string<charT, Args...>".
  128. ^Victor Zverovich (2021-02-05)."std::format improvements".
  129. ^Victor Zverovich; Corentin Jabot (2021-09-11)."Fixing locale handling in chrono formatters".
  130. ^Corentin Jabot (2022-12-02)."format's width estimation is too approximate and not forward compatible"(PDF).
  131. ^Tom Honermann (2023-02-08)."std::format() fill character allowances".
  132. ^Victor Zverovich (2021-09-24)."Add support for std::generator-like types to std::format".
  133. ^Barry Revzin (2021-02-11)."Missing constexpr in std::optional and std::variant".
  134. ^Barry Revzin (2020-10-30)."Inheriting from std::variant".
  135. ^"std::pointer_safety - cppreference.com".en.cppreference.com. Retrieved2024-12-09.
  136. ^"[basic.stc.dynamic.safety]".timsong-cpp.github.io. Retrieved2024-12-09.
  137. ^JF Bastien; Alisdair Meredith (2021-04-16)."Removing Garbage Collection Support".
  138. ^Jens Maurer (2021-04-12)."Mixed string literal concatenation".
  139. ^"Remove non-encodable wide character literals and multicharacter wide character literals"(PDF).
  140. ^CJ Johnson (2021-11-22)."Deprecate std::aligned_storage and std::aligned_union"(PDF).
  141. ^Matthias Kretz (2022-11-08)."Deprecate numeric_limits::has_denorm"(PDF).
  142. ^"Programming Languages — Technical specification for C++ extensions for concurrency 2"(PDF).
  143. ^"C++ Support in Clang".
  144. ^"C++ Standards Support in GCC - GNU Project".
  145. ^Ranns, Nina (2020-11-19)."WG21 2020-11 Virtual Meeting: Minutes of Meeting"(PDF).
  146. ^Ranns, Nina (2021-02-22)."WG21 2021-02 Virtual Meeting: Minutes of Meeting"(PDF).
  147. ^Alexey Dmitriev; Howard Hinnant (2020-10-22)."Relax Requirements for time_point::clock".
  148. ^Tim Song (2020-11-13)."Locks lock lockables".
  149. ^Ranns, Nina (2021-06-07)."WG21 2021-06 Virtual Meeting Minutes of Meeting"(PDF).
  150. ^Ranns, Nina (2021-10-04)."WG21 2021-10 Virtual Meeting Minutes of Meeting"(PDF).
  151. ^"GCC 12 Adds Support For New #elifdef #elifndef Directives".phoronix. May 12, 2021.Archived from the original on December 27, 2022.
  152. ^Steve Downey (2021-06-14)."Add a pmr alias for std::stacktrace".
  153. ^Giuseppe D'Angelo (2021-06-28)."Add a conditional noexcept specification to std::exchange".
  154. ^Tim Song (2021-08-06)."Cleaning up integer-class types".
  155. ^Thomas Köppe (2021-06-11)."Clarifying the status of the "C headers"".
  156. ^Ranns, Nina (2022-02-07)."WG21 2022-02 Virtual Meeting: Minutes of Meeting"(PDF).
  157. ^Ranns, Nina (2022-08-09)."WG21 2022-07 Virtual Meeting: Minutes of Meeting"(PDF).
  158. ^Ranns, Nina (2022-12-05)."WG21 2022-11 Hybrid Meeting: Minutes of Meeting"(PDF).
  159. ^Victor Zverovich (2022-11-08)."Should the output of std::print to a terminal be synchronized with the underlying stream?".
  160. ^Ranns, Nina (2023-03-06)."WG21 2023-02 Hybrid Meeting: Minutes of Meeting"(PDF).
  161. ^Corentin Jabot (2023-02-09)."Referencing The Unicode Standard"(PDF).
  162. ^Tim Song (2023-01-31)."Stashing stashing iterators for proper flattening".
Features
Standard Library
Ideas
Compilers
IDEs
Superset languages
Dialects
Relative to
other languages
People
Retrieved from "https://en.wikipedia.org/w/index.php?title=C%2B%2B23&oldid=1277003063"
Categories:
Hidden categories:

[8]ページ先頭

©2009-2025 Movatter.jp