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++ 202aISO 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 StatusLibrary FeatureProposalStatusSD-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 >= 201811Lreference_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 BehaviorFor 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 >= 201811Lconstexpr 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 >= 201911LRanges 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 textstring::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 >= 202002Lstd::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 >= 201902LMemory 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.
@