head 1.1; branch 1.1.1; access; symbols netbsd-11-0-RC6:1.1.1.6 netbsd-11-0-RC5:1.1.1.6 netbsd-11-0-RC4:1.1.1.6 netbsd-11-0-RC3:1.1.1.6 netbsd-11-0-RC2:1.1.1.6 netbsd-11-0-RC1:1.1.1.6 gcc-14-3-0:1.1.1.7 perseant-exfatfs-base-20250801:1.1.1.6 netbsd-11:1.1.1.6.0.2 netbsd-11-base:1.1.1.6 gcc-12-5-0:1.1.1.6 netbsd-10-1-RELEASE:1.1.1.3 perseant-exfatfs-base-20240630:1.1.1.5 gcc-12-4-0:1.1.1.5 perseant-exfatfs:1.1.1.4.0.2 perseant-exfatfs-base:1.1.1.4 netbsd-10-0-RELEASE:1.1.1.3 netbsd-10-0-RC6:1.1.1.3 netbsd-10-0-RC5:1.1.1.3 netbsd-10-0-RC4:1.1.1.3 netbsd-10-0-RC3:1.1.1.3 netbsd-10-0-RC2:1.1.1.3 netbsd-10-0-RC1:1.1.1.3 gcc-12-3-0:1.1.1.4 gcc-10-5-0:1.1.1.3 netbsd-10:1.1.1.3.0.2 netbsd-10-base:1.1.1.3 gcc-10-4-0:1.1.1.3 cjep_sun2x-base1:1.1.1.2 cjep_sun2x:1.1.1.2.0.4 cjep_sun2x-base:1.1.1.2 cjep_staticlib_x-base1:1.1.1.2 cjep_staticlib_x:1.1.1.2.0.2 cjep_staticlib_x-base:1.1.1.2 gcc-10-3-0:1.1.1.2 gcc-9-3-0:1.1.1.1 FSF:1.1.1; locks; strict; comment @# @; 1.1 date 2020.09.05.07.52.15; author mrg; state Exp; branches 1.1.1.1; next ; commitid ZRYA7IOuwfMjAPmC; 1.1.1.1 date 2020.09.05.07.52.15; author mrg; state Exp; branches; next 1.1.1.2; commitid ZRYA7IOuwfMjAPmC; 1.1.1.2 date 2021.04.10.22.10.07; author mrg; state Exp; branches; next 1.1.1.3; commitid eC4g0MRpqTvEkNOC; 1.1.1.3 date 2022.07.22.19.52.41; author mrg; state Exp; branches; next 1.1.1.4; commitid fUYPgdKzIHqhwVMD; 1.1.1.4 date 2023.07.30.05.21.23; author mrg; state Exp; branches 1.1.1.4.2.1; next 1.1.1.5; commitid tk6nV4mbc9nVEMyE; 1.1.1.5 date 2024.06.30.07.35.45; author mrg; state Exp; branches; next 1.1.1.6; commitid m7BwZsPdfJvuHYfF; 1.1.1.6 date 2025.07.21.02.43.44; author mrg; state Exp; branches; next 1.1.1.7; commitid 9k1gPU4fqf8VHy3G; 1.1.1.7 date 2025.09.13.23.45.51; author mrg; state Exp; branches; next ; commitid KwhwN4krNWa6XBaG; 1.1.1.4.2.1 date 2024.07.01.01.00.58; author perseant; state Exp; branches; next 1.1.1.4.2.2; commitid NkoYLLCQWWw9v4gF; 1.1.1.4.2.2 date 2025.08.02.05.25.52; author perseant; state Exp; branches; next ; commitid 23j6GFaDws3O875G; desc @@ 1.1 log @Initial revision @ text @
C++ 202a ISO C++ 2020 In this implementation the -std=gnu++2a or -std=c++2a flag must be used to enable language and library features. See dialect options. The pre-defined symbol __cplusplus is used to check for the presence of the required flag. This section describes the C++20 and library TS support in the GCC 9 series. The following table lists new library features that have been accepted into the C++2a working draft. The "Proposal" column provides a link to the ISO C++ committee proposal that describes the feature, while the "Status" column indicates the first version of GCC that contains an implementation of this feature (if it has been implemented). The "SD-6 Feature Test" column shows the corresponding macro or header from SD-6: Feature-testing recommendations for C++. C++ 2020 Implementation Status Library Feature Proposal Status SD-6 Feature Test Endian just Endian P0463R1 8.1 Extending make_shared to Support Arrays P0674R1 Floating Point Atomic P0020R6 C++ Synchronized Buffered Ostream P0053R7 Add constexpr modifiers to functions in <algorithm> and <utility> Headers P0202R3 Constexpr for std::complex P0415R1 9.1 Make std::memory_order a scoped enumeration P0439R0 9.1 String Prefix and Suffix Checking P0457R2 9.1 Transformation Trait remove_cvref P0550R2 9.1 nodiscard in the Library P0600R1 9.1 de-pessimize legacy algorithms with std::move P0616R0 9.1 Utility to convert a pointer to a raw pointer P0653R2 8.1 Atomic shared_ptr P0718R2 Deprecate POD P0767R1 Library Support for the Spaceship (Comparison) Operator P0768R1 Treating Unnecessary decay P0777R1 9.1 <span> P0122R7 Extending chrono to Calendars and Time Zones P0355R7 Thou Shalt Not Specialize std Function Templates! P0551R3 Manipulators for C++ Synchronized Buffered Ostream P0753R2 <version> P0754R2 9.1 Comparing Unordered Containers P0809R0 Constexpr iterator requirements P0858R0 9.1 __cpp_lib_string_view >= 201803L and __cpp_lib_array_constexpr >= 201803L Symmetry for spaceship P0905R1 string::reserve Should Not Shrink P0966R1 Atomic Ref P0019R8 Checking for Existence of an Element in Associative Containers P0458R2 9.1 LWG 2511: guaranteed copy elision for piecewise construction P0475R1 7.1 Bit-casting object representations P0476R2 The Curious Case of Padding Bits, Featuring Atomic Compare-and-Exchange P0528R3 Support for contract based programming in C++ P0542R5 Integral power-of-2 operations P0556R3 9.1 Reviewing Deprecated Facilities of C++17 for C++20 P0619R4 Improving the Return Value of Erase-Like Algorithms P0646R1 9.1 __cpp_lib_list_remove_return_type >= 201806L Efficient sized delete for variable sized classes P0722R3 9.1 __cpp_lib_destroying_delete >= 201806L Implicit conversion traits and utility functions P0758R1 9.1 fpos Requirements P0759R1 Note 1 Add shift to <algorithm> P0769R2 Standard Library Specification in a Concepts and Contracts World P0788R3 Constexpr for swap and swap related functions P0879R0 The identity metafunction P0887R1 9.1 explicit(bool) P0892R2 Note 1 Standard Library Concepts P0898R3 Eradicating unnecessarily explicit default constructors from the standard library P0935R0 9.1 Integrating feature-test macros into the C++ WD P0941R2 5.1 constexpr comparison operators for std::array P1023R0 Update The Reference To The Unicode Standard P1025R1 Consistency improvements for <=> and other comparison operators P1120R0 unwrap_ref_decay and unwrap_reference P0318R1 9.1 Simplified partial function application P0356R5 9.1 __cpp_lib_bind_front >= 201811L reference_wrapper for incomplete types P0357R3 9.1 char8_t: A type for UTF-8 characters and strings P0482R6 9.1 __cpp_lib_char8_t >= 201811L Fixing operator>>(basic_istream&, CharT*) (LWG 2499) P0487R1 Utility functions to implement uses-allocator construction P0591R4 9.1 std::scoped_allocator_adaptor changes missing in 9.1.0 P0595R2 std::is_constant_evaluated() P0595R2 9.1 variant and optional should propagate copy/move triviality P0602R4 8.3 A sane variant converting constructor P0608R3 visit<R>: Explicit Return Type for visit P0655R1 9.1 std::function move constructor should be noexcept P0771R1 7.2 The One Ranges Proposal P0896R4 P0899R1 - LWG 3016 is not a defect P0899R1 7.1 Heterogeneous lookup for unordered containers P0919R3 <chrono> zero(), min(), and max() should be noexcept P0972R0 9.1 Constexpr in std::pointer_traits P1006R1 9.1 std::assume_aligned P1007R3 9.1 Smart pointer creation with default initialization P1020R1 Misc constexpr bits P1032R1 Should Span be Regular? P1085R2 Editorial Guidance for merging P0019r8 and P0528r3 P1123R0 Note 1 Cleaning up Clause 20 P1148R0 Make stateful allocator propagation more consistent for operator+(basic_string) P1165R1 Adopt Consistent Container Erasure from Library Fundamentals 2 for C++20 P1209R0 9.1 __cpp_lib_erase_if >= 201811L Completing the Rebase of Library Fundamentals, Version 3, Working Draft P1210R0 Alternative Wording for P0907R4 Signed Integers are Two's Complement P1236R1 Remove CommonReference requirement from StrictWeakOrdering (a.k.a Fixing Relations) P1248R1 Improving Completeness Requirements for Type Traits P1285R0 Well-behaved interpolation for numbers and pointers P0811R3 9.1 __cpp_lib_interpolate >= 201902L Missing feature test macros P1353R0 9.1 polymorphic_allocator<> as a vocabulary type P0339R6 9.1 Making std::underlying_type SFINAE-friendly P0340R3 9.1 Make create_directory() Intuitive P1164R1 8.3 Treated as a DR for C++17 Traits for [Un]bounded Arrays P1357R1 9.1 __cpp_lib_bounded_array_traits >= 201902L
Note 1: The changes in the proposal either do not affect the code in libstdc++, or the changes are not required for conformance.
Implementation Specific Behavior For behaviour which is also specified by previous standards, see C++ 1998/2003 Implementation Specific Behavior, C++ 2011 Implementation Specific Behavior and C++ 2017 Implementation Specific Behavior. This section only documents behaviour which is new in the 202a draft.
@ 1.1.1.1 log @initial import of GCC 9.3.0. changes include: - live patching support - shell completion help - generally better diagnostic output (less verbose/more useful) - diagnostics and optimisation choices can be emitted in json - asan memory usage reduction - many general, and specific to switch, inter-procedure, profile and link-time optimisations. from the release notes: "Overall compile time of Firefox 66 and LibreOffice 6.2.3 on an 8-core machine was reduced by about 5% compared to GCC 8.3" - OpenMP 5.0 support - better spell-guesser - partial experimental support for c2x and c++2a - c++17 is no longer experimental - arm AAPCS GCC 6-8 structure passing bug fixed, may cause incompatibility (restored compat with GCC 5 and earlier.) - openrisc support @ text @@ 1.1.1.2 log @initial import of GCC 10.3.0. main changes include: caveats: - ABI issue between c++14 and c++17 fixed - profile mode is removed from libstdc++ - -fno-common is now the default new features: - new flags -fallocation-dce, -fprofile-partial-training, -fprofile-reproducible, -fprofile-prefix-path, and -fanalyzer - many new compile and link time optimisations - enhanced drive optimisations - openacc 2.6 support - openmp 5.0 features - new warnings: -Wstring-compare and -Wzero-length-bounds - extended warnings: -Warray-bounds, -Wformat-overflow, -Wrestrict, -Wreturn-local-addr, -Wstringop-overflow, -Warith-conversion, -Wmismatched-tags, and -Wredundant-tags - some likely C2X features implemented - more C++20 implemented - many new arm & intel CPUs known hundreds of reported bugs are fixed. full list of changes can be found at: https://gcc.gnu.org/gcc-10/changes.html @ text @d1 2 a2 2
d5 1 a5 1 C++ 2020 d23 1 a23 2 This section describes the C++20 and library TS support in mainline GCC, not in any particular release. d28 1 a28 1 the C++20 working draft. The "Proposal" column provides a link to the d32 1 a32 3 A dash (—) in the status column indicates that the changes in the proposal either do not affect the code in libstdc++, or the changes are not required for conformance. The "SD-6 Feature Test / Notes" column shows the corresponding macro or header from d34 1 a34 2 Feature-testing recommendations for C++ (where applicable) or any notes about the implementation. d37 2 a38 2 C++ 2020 Library Features d50 1 a50 1 SD-6 Feature Test / Notes d57 1 a57 452 Compile-time programming Add constexpr modifiers to functions in <algorithm> and <utility> Headers P0202R3 10.1 __cpp_lib_constexpr_algorithms >= 201703L Constexpr for swap and swap related functions P0879R0 10.1 __cpp_lib_constexpr_algorithms >= 201806L Constexpr for std::complex P0415R1 9.1 __cpp_lib_constexpr_complex >= 201711L (since 9.4, see Note 1) P0595R2 std::is_constant_evaluated() P0595R2 9.1 __cpp_lib_is_constant_evaluated >= 201811L More constexpr containers P0784R7 10.1 __cpp_lib_constexpr_dynamic_alloc >= 201907L Making std::string constexpr P0980R1 __cpp_lib_constexpr_string >= 201907L Making std::vector constexpr P1004R2 __cpp_lib_constexpr_vector >= 201907L Constexpr in std::pointer_traits P1006R1 9.1 __cpp_lib_constexpr_memory >= 201811L (since 9.4, see Note 1) constexpr for <numeric> algorithms P1645R1 10.1 __cpp_lib_constexpr_numeric >= 201911L Constexpr iterator requirements P0858R0 9.1 __cpp_lib_array_constexpr >= 201803L __cpp_lib_string_view >= 201803L (both since 9.4, see Note 1) constexpr comparison operators for std::array P1023R0 10.1 __cpp_lib_array_constexpr >= 201806 Misc constexpr bits P1032R1 10.1 __cpp_lib_array_constexpr >= 201811L __cpp_lib_constexpr_functional >= 201811L __cpp_lib_constexpr_iterator >= 201811L __cpp_lib_constexpr_string_view >= 201811L __cpp_lib_constexpr_tuple >= 201811L __cpp_lib_constexpr_utility >= 201811L constexpr INVOKE P1065R2 10.1 __cpp_lib_constexpr_functional >= 201907L Transformation Trait remove_cvref P0550R2 9.1 __cpp_lib_remove_cvref >= 201711L (since 9.4, see Note 1) Implicit conversion traits and utility functions P0758R1 9.1 __cpp_lib_is_nothrow_convertible >= 201806L (since 9.4, see Note 1) The identity metafunction P0887R1 9.1 __cpp_lib_type_identity >= 201806L (since 9.4, see Note 1) unwrap_ref_decay and unwrap_reference P0318R1 9.1 __cpp_lib_unwrap_ref >= 201811L (since 9.4, see Note 1) Improving Completeness Requirements for Type Traits P1285R0 Partial Missing feature test macros P1353R0 9.1 Making std::underlying_type SFINAE-friendly P0340R3 9.1 Traits for [Un]bounded Arrays P1357R1 9.1 __cpp_lib_bounded_array_traits >= 201902L Layout-compatibility and pointer-interconvertibility traits P0466R5 __cpp_lib_is_layout_compatible >= 201907L __cpp_lib_is_pointer_interconvertible >= 201907L Integrating feature-test macros into the C++ WD P0941R2 5.1 <version> P0754R2 9.1 __has_include(<version>) Synchronization Atomic Ref P0019R8 10.1 __cpp_lib_atomic_ref >= 201806L Floating Point Atomic P0020R6 10.1 __cpp_lib_atomic_float >= 201711L C++ Synchronized Buffered Ostream P0053R7 __cpp_lib_syncbuf >= 201711L Manipulators for C++ Synchronized Buffered Ostream P0753R2 __cpp_lib_syncbuf >= 201803L Make std::memory_order a scoped enumeration P0439R0 9.1 The Curious Case of Padding Bits, Featuring Atomic Compare-and-Exchange P0528R3 Atomic shared_ptr P0718R2 __cpp_lib_atomic_shared_ptr >= 201711L std::stop_token and std::jthread P0660R10 10.1 __cpp_lib_jthread >= 201907L Rename condition_variable_any interruptible wait methods P1869R1 10.1 __cpp_lib_jthread >= 201911L Atomic waiting and notifying, std::semaphore, std::latch and std::barrier P1135R6 __cpp_lib_atomic_lock_free_type_aliases >= 201907L __cpp_lib_atomic_flag_test >= 201907L __cpp_lib_atomic_wait >= 201907L __cpp_lib_semaphore >= 201907L __cpp_lib_latch >= 201907L __cpp_lib_barrier >= 201907L Fixing Atomic Initialization P0883R2 10.1 __cpp_lib_atomic_value_initialization >= 201911L Ranges and Concepts Standard Library Concepts P0898R3 10.1 __cpp_lib_concepts >= 201806L Rename concepts to standard_case for C++20, while we still can P1754R1 10.1 __cpp_lib_concepts >= 201907L Wording for boolean-testable P1964R2 10.1 __cpp_lib_concepts >= 202002L The One Ranges Proposal P0896R4 10.1 __cpp_lib_ranges >= 201811L Input Range Adaptors d59 3 a61 2 P1035R7 d63 2 a64 2 10.1 __cpp_lib_ranges >= 201907L d68 2 a69 1 ranges compare algorithm are over-constrained d71 3 a73 2 P1716R3 d75 1 a75 11 10.1 __cpp_lib_ranges >= 201911L Remove CommonReference requirement from StrictWeakOrdering (a.k.a Fixing Relations) P1248R1 10.1 d80 2 a81 1 Ranges Design Cleanup d83 3 a85 2 P1252R2 d87 1 a87 1 10.1 a90 8 Time, dates, calendars, time zones d93 1 a93 1 Extending chrono to Calendars and Time Zones d95 3 a97 2 P0355R7 d99 2 a100 2 __cpp_lib_chrono >= 201803L d105 1 a105 1 Miscellaneous minor fixes for chrono d107 3 a109 2 P1466R3 d111 2 a112 2 __cpp_lib_chrono >= 201907L d116 1 a116 1 <chrono> zero(), min(), and max() should be noexcept d118 3 a120 2 P0972R0 a125 1 d127 1 a127 7 Three-way comparison Library Support for the Spaceship (Comparison) Operator d129 3 a131 2 P0768R1 d133 2 a134 2 10.1 __cpp_lib_three_way_comparison >= 201711L d138 1 a138 1 Symmetry for spaceship d140 3 a142 2 P0905R1 d144 1 a144 1 10.1 d149 1 a149 1 Adding <=> to the standard library d151 3 a153 6 P1614R2 10.1 __cpp_lib_three_way_comparison >= 201907L d155 2 a158 1 d160 1 a160 8 Strings and text string::reserve Should Not Shrink d162 3 a164 2 P0966R1 d166 1 a166 1 d171 1 a171 1 char8_t: A type for UTF-8 characters and strings d173 3 a175 2 P0482R6 d178 1 a178 1 __cpp_lib_char8_t >= 201811L d182 1 a182 1 char8_t backward compatibility remediation d184 3 a186 2 P1423R3 d188 2 a189 2 10.1 __cpp_lib_char8_t >= 201907L d194 1 a194 1 Text formatting d196 3 a198 2 P0645R10 d201 1 a201 3 __cpp_lib_format >= 201907L d206 1 a206 1 Integration of chrono with text formatting d208 3 a210 2 P1361R2 d213 1 a213 3 __cpp_lib_format >= 201907L d218 1 a218 1 Printf corner cases in std::format d220 3 a222 2 P1652R1 d225 1 a225 3 __cpp_lib_format >= 201907L d229 1 a229 1 String Prefix and Suffix Checking d231 3 a233 2 P0457R2 d236 1 a236 1 __cpp_lib_starts_ends_with >= 201711L (since 9.4, see Note 1) d241 1 a241 1 Update The Reference To The Unicode Standard d243 3 a245 2 P1025R1 a250 1 d252 2 a253 7 Containers span: bounds-safe views for sequences of objects d255 3 a257 2 P0122R7 d259 2 a260 2 10.1 __cpp_lib_span >= 201803L d264 2 d267 3 a269 1 Usability Enhancements for std::span d271 2 a272 6 P1024R3 10.1 __cpp_lib_span >= 201902L d276 2 a277 1 Should Span be Regular? d279 3 a281 2 P1085R2 d283 2 a284 2 10.1 d288 1 a288 1 Fixed-size <span> construction from dynamic range d290 3 a292 22 P1976R2 10.1 __cpp_lib_span >= 202002L std::to_array P0325R4 10.1 __cpp_lib_to_array >= 201907L Checking for Existence of an Element in Associative Containers P0458R2 d303 2 a304 1 P0809R0 d311 1 a311 2 Heterogeneous lookup for unordered containers d313 3 a315 12 P0919R3 __cpp_lib_generic_unordered_lookup >= 201811 Adopt Consistent Container Erasure from Library Fundamentals 2 for C++20 P1209R0 d318 2 a319 1 __cpp_lib_erase_if >= 201811L d323 2 a324 1 Improving the Return Value of Erase-Like Algorithms d326 3 a328 2 P0646R1 d330 2 a331 2 9.1 __cpp_lib_list_remove_return_type >= 201806L d335 2 a336 1 Improving the Return Value of Erase-Like Algorithms II: Free erase/erase_if d338 3 a340 2 P1115R3 d342 2 a343 34 9.1 __cpp_lib_erase_if >= 202002L (defined to 201900L for GCC 9.1 and 9.2 so use > 201811L) Signed ssize() functions, unsigned size() functions P1227R2 10.1 __cpp_lib_ssize >= 201902L Memory management Utility to convert a pointer to a raw pointer P0653R2 8.1 __cpp_lib_to_address >= 201711L (since 9.4, see Note 1) d348 1 a348 1 Extending make_shared to Support Arrays d350 3 a352 2 P0674R1 d355 1 a355 1 __cpp_lib_shared_ptr_arrays >= 201707L d359 1 a359 1 Efficient sized delete for variable sized classes d361 3 a363 2 P0722R3 d366 1 a366 1 __cpp_lib_destroying_delete >= 201806L d370 1 a370 1 Utility functions to implement uses-allocator construction d372 3 a374 6 P0591R4 9.1 std::scoped_allocator_adaptor changes missing in 9.1.0 d376 2 d381 2 a382 1 std::assume_aligned d384 3 a386 2 P1007R3 d388 2 a389 2 9.1 __cpp_lib_assume_aligned >= 201811L (since 9.4, see Note 1) d394 1 a394 1 Smart pointer creation with default initialization d396 3 a398 2 P1020R1 d401 1 a401 1 __cpp_lib_smart_ptr_for_overwrite >= 201811L d405 2 a406 1 Make stateful allocator propagation more consistent for operator+(basic_string) d408 3 a410 2 P1165R1 d412 1 a412 1 10.1 d417 1 d419 3 a421 5 polymorphic_allocator<> as a vocabulary type P0339R6 d424 1 a424 3 __cpp_lib_polymorphic_allocator >= 201902L (since 9.4, see Note 1) d428 2 a429 1 LWG 2511: guaranteed copy elision for piecewise construction d431 3 a433 2 P0475R1 d435 1 a435 1 7.1 a438 1 d440 5 a444 2 Miscellaneous d446 2 d451 1 a451 1 nodiscard in the Library d453 3 a455 2 P0600R1 d458 1 a458 1 d462 1 a462 1 de-pessimize legacy algorithms with std::move d464 3 a466 2 P0616R0 d473 1 a473 1 Deprecate POD d475 3 a477 2 P0767R1 d479 1 a479 1 10.1 d484 2 a485 1 Treating Unnecessary decay d487 3 a489 2 P0777R1 d491 1 a491 1 9.1 d497 1 a497 1 Thou Shalt Not Specialize std Function Templates! d499 3 a501 2 P0551R3 d509 1 a509 1 Bit-casting object representations d511 3 a513 2 P0476R2 d516 1 a516 1 __cpp_lib_bit_cast >= 201806L d520 1 a520 1 Integral power-of-2 operations d522 3 a524 2 P0556R3 d527 1 a527 1 __cpp_lib_int_pow2 >= 201806L (since 9.4, see Note 1) d531 1 a531 1 On the names of low-level bit manipulation functions d533 3 a535 2 P1956R1 d537 2 a538 12 10.1 __cpp_lib_int_pow2 >= 202002L Safe integral comparisons P0586R2 10.1 __cpp_lib_integer_comparison_functions >= 202002L d543 1 a543 1 Reviewing Deprecated Facilities of C++17 for C++20 d545 3 a547 2 P0619R4 d554 1 a554 1 fpos Requirements d556 3 a558 2 P0759R1 d560 1 a560 1 d565 1 a565 1 Add shift to <algorithm> d567 3 a569 2 P0769R2 d571 2 a572 2 10.1 __cpp_lib_shift >= 201806L d577 1 a577 1 Standard Library Specification in a Concepts and Contracts World d579 3 a581 2 P0788R3 d588 2 a589 1 explicit(bool) d591 3 a593 2 P0892R2 d595 1 a595 1 d600 2 a601 1 Eradicating unnecessarily explicit default constructors from the standard library d603 3 a605 2 P0935R0 d607 1 a607 1 9.1 d612 1 a612 1 std::function move constructor should be noexcept d614 3 a616 2 P0771R1 d618 1 a618 1 7.2 d626 2 a627 1 P0356R5 d634 1 a634 1 bind_front should not unwrap reference_wrapper d636 3 a638 2 P1651R0 d640 2 a641 2 9.3 __cpp_lib_bind_front >= 201907L d645 1 a645 1 reference_wrapper for incomplete types d647 3 a649 2 P0357R3 d652 1 a652 1 d660 2 a661 1 P0487R1 d668 24 d695 2 a696 1 P0602R4 d703 1 d707 2 a708 1 P0608R3 d710 1 a710 1 10.1 d718 2 a719 1 P0655R1 d726 1 a726 1 P0899R1 - LWG 3016 is not a defect d728 3 a730 2 P0899R1 d732 1 a732 1 7.1 d737 2 a738 1 Editorial Guidance for merging P0019r8 and P0528r3 d740 3 a742 2 P1123R0 d744 1 a744 1 d749 1 a749 2 Cleaning up Clause 20 d751 3 a753 2 P1148R0 d755 1 a755 1 d761 1 a761 1 Completing the Rebase of Library Fundamentals, Version 3, Working Draft d763 3 a765 2 P1210R0 d772 1 a772 1 Alternative Wording for P0907R4 Signed Integers are Two's Complement d774 3 a776 2 P1236R1 d778 2 a779 2 d783 1 d785 3 a787 2 I Stream, You Stream, We All Stream for istream_iterator d789 6 d796 3 a798 2 P0738R2 d800 1 a800 1 10.1 d805 2 d808 3 a810 2 Mandating the Standard Library: Clause 16 - Language support library d812 7 d820 3 a822 2 P1458R1 d824 2 a825 2 d829 2 d832 3 a834 2 Mandating the Standard Library: Clause 18 - Diagnostics library d836 2 a837 6 P1459R1 d841 1 d843 3 a845 2 Mandating the Standard Library: Clause 20 - Strings library d847 2 a848 6 P1462R1 d852 2 d855 3 a857 2 Mandating the Standard Library: Clause 21 - Containers library d859 2 a860 6 P1463R1 10.1 d865 1 d867 3 a869 6 Mandating the Standard Library: Clause 22 - Iterators library P1464R1 d876 1 a876 1 Make create_directory() Intuitive d878 3 a880 3 P1164R1 d882 2 a883 2 8.3 Treated as a DR for C++17 d887 2 d890 3 a892 1 Target Vectorization Policies from Parallelism V2 TS to C++20 d894 2 a895 6 P1001R2 9.1 __cpp_lib_execution >= 201902L (since 9.4, see Note 1) d899 2 a900 1 Merge Coroutines TS into C++20 working draft d902 3 a904 2 P0912R5 d906 2 a907 2 10.1 __cpp_lib_coroutines >= 201902L d911 2 a912 1 Endian just Endian d914 3 a916 2 P0463R1 d918 2 a919 2 8.1 __cpp_lib_endian >= 201907L d923 2 a924 1 Bit operations d926 3 a928 2 P0553R4 d930 2 a931 2 10.1 __cpp_lib_bitops >= 201907L (since 9.4, see Note 1) d938 2 a939 1 P0811R3 d946 1 a946 1 Mathematical constants d948 3 a950 2 P0631R8 d952 2 a953 2 10.1 __cpp_lib_math_constants >= 201907L a956 2 std::source_location d958 2 a959 2 P1208R6 a960 1 d962 3 a964 1 __cpp_lib_source_location >= 201907L d966 2 d971 1 a971 2 Efficient access to std::basic_stringbuf's Buffer d973 3 a975 2 P0408R7 d977 1 a977 1 d981 22 d1008 2 a1009 3 Note 1: This feature is supported in older releases but the __cpp_lib macro is not defined to the right value (or not defined at all) until the version shown in parentheses. d1012 15 @ 1.1.1.3 log @initial import of GCC 10.4.0 sources. mostly a large list of PRs fixed (210 total), plus one x86-64 specific change related to MMX and 64 bit integer return. https://gcc.gnu.org/gcc-10/changes.html links to the full list of PRs fixed. @ text @d23 2 a24 1 This section describes the C++20 and library TS support in the GCC 10 release series. a550 10 Avoid template bloat for safe_ranges in combination with ‘subrange-y’ view adaptors. P1739R4 d1391 1 a1391 1 9.1 @ 1.1.1.4 log @initial import of GCC 12.3.0. major changes in GCC 11 included: - The default mode for C++ is now -std=gnu++17 instead of -std=gnu++14. - When building GCC itself, the host compiler must now support C++11, rather than C++98. - Some short options of the gcov tool have been renamed: -i to -j and -j to -H. - ThreadSanitizer improvements. - Introduce Hardware-assisted AddressSanitizer support. - For targets that produce DWARF debugging information GCC now defaults to DWARF version 5. This can produce up to 25% more compact debug information compared to earlier versions. - Many optimisations. - The existing malloc attribute has been extended so that it can be used to identify allocator/deallocator API pairs. A pair of new -Wmismatched-dealloc and -Wmismatched-new-delete warnings are added. - Other new warnings: -Wsizeof-array-div, enabled by -Wall, warns about divisions of two sizeof operators when the first one is applied to an array and the divisor does not equal the size of the array element. -Wstringop-overread, enabled by default, warns about calls to string functions reading past the end of the arrays passed to them as arguments. -Wtsan, enabled by default, warns about unsupported features in ThreadSanitizer (currently std::atomic_thread_fence). - Enchanced warnings: -Wfree-nonheap-object detects many more instances of calls to deallocation functions with pointers not returned from a dynamic memory allocation function. -Wmaybe-uninitialized diagnoses passing pointers or references to uninitialized memory to functions taking const-qualified arguments. -Wuninitialized detects reads from uninitialized dynamically allocated memory. -Warray-parameter warns about functions with inconsistent array forms. -Wvla-parameter warns about functions with inconsistent VLA forms. - Several new features from the upcoming C2X revision of the ISO C standard are supported with -std=c2x and -std=gnu2x. - Several C++20 features have been implemented. - The C++ front end has experimental support for some of the upcoming C++23 draft. - Several new C++ warnings. - Enhanced Arm, AArch64, x86, and RISC-V CPU support. - The implementation of how program state is tracked within -fanalyzer has been completely rewritten with many enhancements. see https://gcc.gnu.org/gcc-11/changes.html for a full list. major changes in GCC 12 include: - An ABI incompatibility between C and C++ when passing or returning by value certain aggregates containing zero width bit-fields has been discovered on various targets. x86-64, ARM and AArch64 will always ignore them (so there is a C ABI incompatibility between GCC 11 and earlier with GCC 12 or later), PowerPC64 ELFv2 always take them into account (so there is a C++ ABI incompatibility, GCC 4.4 and earlier compatible with GCC 12 or later, incompatible with GCC 4.5 through GCC 11). RISC-V has changed the handling of these already starting with GCC 10. As the ABI requires, MIPS takes them into account handling function return values so there is a C++ ABI incompatibility with GCC 4.5 through 11. - STABS: Support for emitting the STABS debugging format is deprecated and will be removed in the next release. All ports now default to emit DWARF (version 2 or later) debugging info or are obsoleted. - Vectorization is enabled at -O2 which is now equivalent to the original -O2 -ftree-vectorize -fvect-cost-model=very-cheap. - GCC now supports the ShadowCallStack sanitizer. - Support for __builtin_shufflevector compatible with the clang language extension was added. - Support for attribute unavailable was added. - Support for __builtin_dynamic_object_size compatible with the clang language extension was added. - New warnings: -Wbidi-chars warns about potentially misleading UTF-8 bidirectional control characters. -Warray-compare warns about comparisons between two operands of array type. - Some new features from the upcoming C2X revision of the ISO C standard are supported with -std=c2x and -std=gnu2x. - Several C++23 features have been implemented. - Many C++ enhancements across warnings and -f options. see https://gcc.gnu.org/gcc-12/changes.html for a full list. @ text @d13 2 a14 2 In this implementation the -std=gnu++20 or -std=c++20 flag must be used to enable language d23 1 a23 2 This section describes the C++20 and library TS support in the GCC 12 release series, not in any particular release. d27 2 a28 2 The following table lists new library features that are included in the C++20 standard. The "Proposal" column provides a link to the d116 1 d122 1 a122 1 12.1 d127 1 d133 1 a133 1 12.1 d296 1 d302 1 a302 1 12.1 d359 1 d365 1 a365 1 11.1 d370 1 d376 1 a376 1 11.1 d402 1 d408 1 a408 1 12.1 d433 1 d439 1 a439 1 11.1 d647 1 d653 1 a653 1 11.1 d818 1 d824 1 a824 1 11.1 a828 10 Refinement Proposal for P0919 P1690R1 11.1 d891 1 d897 1 a897 1 12.1 d934 1 d940 1 a940 1 12.1 d1037 1 d1043 1 a1043 1 11.1 d1078 1 d1084 1 a1084 1 12.1 d1180 1 d1186 1 a1186 1 11.1 d1425 1 d1431 1 a1431 1 11.1 d1438 1 d1444 1 a1444 1 11.1 @ 1.1.1.4.2.1 log @Sync with HEAD. @ text @d254 1 d260 2 a261 2 Most misuses are diagnosed, but not all. d545 1 d551 1 a551 1 12.1 d563 1 a563 1 d569 1 a569 1 (see Note 2) d574 1 d580 1 a580 1 (see Note 2) d720 1 d726 1 a726 1 d800 1 d806 1 a806 1 d1033 1 a1033 1 These changes will not be implemented. d1107 1 d1113 1 a1113 1 d1238 1 d1244 1 a1244 1 d1335 1 d1344 1 a1344 1 a1452 5 Note 2: The C++20 calendar types are supported since 11.1, time zones, UTC, formatting and parsing are not supported. @ 1.1.1.4.2.2 log @Sync with HEAD @ text @d23 2 a24 1 This section describes the C++20 and library TS support in the GCC 12 release series. @ 1.1.1.5 log @import GCC 12.4.0. this includes at least 85 GCC PRs fixed, 2 C, 17 C++, 16 libstdc++-v3, at least 13 target-specific (x86, arm64, riscv mostly), and at least 24 optimisation PRs. @ text @d254 1 d260 2 a261 2 Most misuses are diagnosed, but not all. d545 1 d551 1 a551 1 12.1 d563 1 a563 1 d569 1 a569 1 (see Note 2) d574 1 d580 1 a580 1 (see Note 2) d720 1 d726 1 a726 1 d800 1 d806 1 a806 1 d1033 1 a1033 1 These changes will not be implemented. d1107 1 d1113 1 a1113 1 d1238 1 d1244 1 a1244 1 d1335 1 d1344 1 a1344 1 a1452 5 Note 2: The C++20 calendar types are supported since 11.1, time zones, UTC, formatting and parsing are not supported. @ 1.1.1.6 log @initial import of GCC 12.5.0. this is the final GCC 12 release, and fixes at least 241 specific bugs in the GCC bugzilla: https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=12.5 though many are in components we don't ship in base (ada, fortran, etc.) @ text @d23 2 a24 1 This section describes the C++20 and library TS support in the GCC 12 release series. @ 1.1.1.7 log @initial import of GCC 14.3.0. major changes in GCC 13: - improved sanitizer - zstd debug info compression - LTO improvements - SARIF based diagnostic support - new warnings: -Wxor-used-as-pow, -Wenum-int-mismatch, -Wself-move, -Wdangling-reference - many new -Wanalyzer* specific warnings - enhanced warnings: -Wpessimizing-move, -Wredundant-move - new attributes to mark file descriptors, c++23 "assume" - several C23 features added - several C++23 features added - many new features for Arm, x86, RISC-V major changes in GCC 14: - more strict C99 or newer support - ia64* marked deprecated (but seemingly still in GCC 15.) - several new hardening features - support for "hardbool", which can have user supplied values of true/false - explicit support for stack scrubbing upon function exit - better auto-vectorisation support - added clang-compatible __has_feature and __has_extension - more C23, including -std=c23 - several C++26 features added - better diagnostics in C++ templates - new warnings: -Wnrvo, Welaborated-enum-base - many new features for Arm, x86, RISC-V - possible ABI breaking change for SPARC64 and small structures with arrays of floats. @ text @d23 1 a23 2 This section describes the C++20 and library TS support in the GCC 14 release series. d68 1 a68 1 d78 1 a78 1 d88 1 a88 1 d96 1 a96 1 std::is_constant_evaluated() d98 1 a98 1 d108 1 a108 1 d118 1 a118 1 d128 1 a128 1 d138 1 a138 1 d148 1 a148 1 d158 1 a158 1 d174 1 a174 1 d184 1 a184 1 d203 1 a203 1 d214 1 a214 1 d224 1 a224 1 d234 1 a234 1 d245 1 a245 1 d255 1 a255 1 d265 1 a265 1 d275 1 a275 1 d285 1 a285 1 d295 1 a295 1 d310 1 a310 1 d320 1 a320 1 d337 1 a337 1 d347 1 a347 1 d357 1 a357 1 d367 1 a367 1 d377 1 a377 1 d385 1 d388 1 a388 1 d391 1 a391 1 13.1 d398 1 a398 1 d408 1 a408 1 d418 1 a418 1 d428 1 a428 1 d447 1 a447 1 d465 1 a465 1 d475 1 a475 1 d485 1 a485 1 d495 1 a495 1 d505 1 a505 1 d515 1 a515 1 d525 1 a525 1 d535 1 a535 1 d545 1 a545 1 d560 1 d563 1 a563 1 d566 1 a566 1 14.1 (see Note 2) d573 1 a573 1 d576 1 a576 1 11.1 (see Note 2) d583 1 a583 1 d600 1 a600 1 d610 1 a610 1 d620 1 a620 1 d639 1 a639 1 d649 1 a649 1 d659 1 a659 1 d667 1 d670 1 a670 1 d673 1 a673 1 13.1 d680 1 d683 1 a683 1 d686 1 a686 1 13.1 d693 1 d696 1 a696 1 d699 1 a699 1 13.1 d708 1 a708 1 d718 1 a718 1 d735 1 a735 1 d747 1 a747 1 d757 1 a757 1 d767 1 a767 1 d777 1 a777 1 d787 1 a787 1 d797 1 a797 1 d807 1 a807 1 d817 1 a817 1 d827 1 a827 1 d837 1 a837 1 d847 1 a847 1 d862 1 a862 1 d879 1 a879 1 d889 1 a889 1 d899 1 a899 1 d909 1 a909 1 d921 1 a921 1 d931 1 a931 1 a938 10 Rename "default_init" Functions P1973R1 12.1 __cpp_lib_smart_ptr_for_overwrite >= 201811L d941 1 a941 1 d953 1 a953 1 d965 1 a965 1 d982 1 a982 1 d992 1 a992 1 d1002 1 a1002 1 d1012 1 a1012 1 d1023 1 a1023 1 d1033 1 a1033 1 d1043 1 a1043 1 d1053 1 a1053 1 d1063 1 a1063 1 d1073 1 a1073 1 d1083 1 a1083 1 d1093 1 a1093 1 d1103 1 a1103 1 d1113 1 a1113 1 d1123 1 a1123 1 d1133 1 a1133 1 d1143 1 a1143 1 d1153 1 a1153 1 d1163 1 a1163 1 d1173 1 a1173 1 d1183 1 a1183 1 d1193 1 a1193 1 d1203 1 a1203 1 d1213 1 a1213 1 d1223 1 a1223 1 d1233 1 a1233 1 d1244 1 a1244 1 d1254 1 a1254 1 d1267 1 a1267 1 d1280 1 a1280 1 d1293 1 a1293 1 d1306 1 a1306 1 d1319 1 a1319 1 d1332 1 a1332 1 d1342 1 a1342 1 d1355 1 a1355 1 d1365 1 a1365 1 d1375 1 a1375 1 d1385 1 a1385 1 d1395 1 a1395 1 d1405 1 a1405 1 d1415 1 a1415 1 d1427 1 a1427 1 d1446 1 a1446 2 time zones and UTC are supported since 13.1, and chrono::parse is supported since 14.1. @