head 1.1; branch 1.1.1; access; symbols netbsd-11-0-RC5:1.1.1.2 netbsd-11-0-RC4:1.1.1.2 netbsd-11-0-RC3:1.1.1.2 netbsd-11-0-RC2:1.1.1.2 netbsd-11-0-RC1:1.1.1.2 gcc-14-3-0:1.1.1.3 perseant-exfatfs-base-20250801:1.1.1.2 netbsd-11:1.1.1.2.0.2 netbsd-11-base:1.1.1.2 gcc-12-5-0:1.1.1.2 perseant-exfatfs-base-20240630:1.1.1.1 gcc-12-4-0:1.1.1.1 perseant-exfatfs:1.1.1.1.0.2 perseant-exfatfs-base:1.1.1.1 gcc-12-3-0:1.1.1.1 FSF:1.1.1; locks; strict; comment @# @; 1.1 date 2023.07.30.05.21.23; author mrg; state Exp; branches 1.1.1.1; next ; commitid tk6nV4mbc9nVEMyE; 1.1.1.1 date 2023.07.30.05.21.23; author mrg; state Exp; branches 1.1.1.1.2.1; next 1.1.1.2; commitid tk6nV4mbc9nVEMyE; 1.1.1.2 date 2025.07.21.02.43.44; author mrg; state Exp; branches; next 1.1.1.3; commitid 9k1gPU4fqf8VHy3G; 1.1.1.3 date 2025.09.13.23.45.51; author mrg; state Exp; branches; next ; commitid KwhwN4krNWa6XBaG; 1.1.1.1.2.1 date 2025.08.02.05.25.52; author perseant; state Exp; branches; next ; commitid 23j6GFaDws3O875G; desc @@ 1.1 log @Initial revision @ text @
C++ 2023 ISO C++ 2023 In this implementation the -std=gnu++23 or -std=c++23 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++23 and library TS support in mainline GCC, not in any particular release. The following table lists new library features that have been accepted into the C++23 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). 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 SD-6: Feature-testing recommendations for C++ (where applicable) or any notes about the implementation. C++ 2023 Library Features Library Feature Proposal Status SD-6 Feature Test / Notes Ranges and Views Range constructor for std::string_view P1989R2 11.1 join_view should join all views of ranges P2328R1 11.2 Clarifying range adaptor objects P2281R1 11.1 Views should not be required to be default constructible P2325R3 11.3 __cpp_lib_ranges >= 202106L Conditionally borrowed ranges P2017R1 11.1 Require span & basic_string_view to be Trivially Copyable P2251R1 Yes Repairing input range adaptors and counted_iterator P2259R1 12.1 Superior String Splitting P2210R2 12.1 What is a view? P2415R2 12.1 __cpp_lib_ranges >= 202110L Fix istream_view P2432R1 12.1 starts_with and ends_with P1659R3 __cpp_lib_ranges_starts_ends_with >= 202106L zip P2321R2 __cpp_lib_ranges_zip >= 202110L Compile-time programming A proposal for a type trait to detect scoped enumerations P1048R1 11.1 __cpp_lib_is_scoped_enum >= 202011L std::to_underlying for enumerations P1682R3 11.1 __cpp_lib_to_underlying >= 202102L Missing constexpr in std::optional and std::variant P2231R1 11.3 (optional) 12.1 (variant) __cpp_lib_constexpr_optional >= 202106L __cpp_lib_variant >= 202106L Making std::unique_ptr constexpr P2273R3 12.1 __cpp_lib_constexpr_memory >= 202202L Making std::type_info::operator== constexpr P1328R1 12.1 __cpp_lib_constexpr_typeinfo >= 202106L constexpr for <cmath> and <cstdlib> P0533R9 __cpp_lib_constexpr_cmath >= 202202L Deprecate std::aligned_storage and std::aligned_union P1413R3 A type trait to detect reference binding to temporary P2255R2 __cpp_lib_reference_from_temporary >= 202202L Strings and text string contains function P1679R3 11.1 __cpp_lib_string_contains >= 202011L Prohibit std::basic_string and std::basic_string_view construction from nullptr P2166R1 12.1 basic_string::resize_and_overwrite P1072R10 12.1 __cpp_lib_resize_and_overwrite >= 202110L A strstream replacement using span<charT> as buffer P0448R4 12.1 __cpp_lib_spanstream >= 202106L Containers Iterator pair constructors for stack and queue P1425R4 12.1 __cpp_lib_adaptor_iterator_pair_constructor >= 202106L Stop overconstraining allocators in container deduction guides P1518R2 12.1 Heterogeneous erasure overloads for associative containers P2077R3 __cpp_lib_associative_heterogeneous_erasure >= 202110L Miscellaneous Inheriting from std::variant P2162R2 11.3 __cpp_lib_variant >= 202102L Printing volatile Pointers P1147R1 11.3 A Proposal to add stacktrace library P0881R7 12.1 __cpp_lib_stacktrace >= 202011L Add a pmr alias for std::stacktrace P2301R1 12.1 std::expected P0323R12 12.1 __cpp_lib_expected >= 202202L Monadic operations for std::optional P0798R8 12.1 __cpp_lib_optional >= 202110L move_only_function P0288R9 12.1 __cpp_lib_move_only_function >= 202110L invoke_r P2136R3 12.1 __cpp_lib_invoke_r >= 202106L Byteswapping for fun&&nuf P1272R4 12.1 __cpp_lib_byteswap >= 202110L Function to mark unreachable code P0627R6 12.1 __cpp_lib_unreachable >= 202202L Add a conditional noexcept specification to std::exchange P2401R0 12.1 Support C atomics in C++ P0943R6 12.1 __cpp_lib_stdatomic_h >= 202011L Clarifying the status of the "C headers" P2340R1 Yes Relax Requirements for time_point::clock P2212R2 Yes Removing Garbage Collection Support P2186R2 12.1
@ 1.1.1.1 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 @@ 1.1.1.1.2.1 log @Sync with HEAD @ text @d23 2 a24 1 This section describes the C++23 and library TS support in the GCC 12 release series. @ 1.1.1.2 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++23 and library TS support in the GCC 12 release series. @ 1.1.1.3 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++23 and library TS support in the GCC 14 release series. d68 1 a68 1 d79 1 a79 1 d91 1 a91 1 d102 1 a102 1 d113 1 a113 1 d124 1 a124 1 d135 1 a135 1 d146 1 a146 1 d157 1 a157 1 d168 1 a168 1 d180 1 a180 1 d189 1 d192 1 a192 1 d196 1 a196 1 13.1 a200 231 views::repeat P2474R2 13.1 __cpp_lib_ranges_repeat >= 202207L views::enumerate P2164R9 13.1 __cpp_lib_ranges_enumerate >= 202302L views::join_with P2441R2 13.1 __cpp_lib_ranges_join_with >= 202202L Windowing range adaptors: views::chunk and views::slide P2442R1 13.1 __cpp_lib_ranges_slide >= 202202L views::chunk_by P2443R1 13.1 __cpp_lib_ranges_chunk_by >= 202202L views::stride P1899R3 13.1 __cpp_lib_ranges_stride >= 202207L views::cartesian_product P2374R4 13.1 __cpp_lib_ranges_cartesian_product >= 202207L Empty Product for certain Views P2540R1 13.1 __cpp_lib_ranges_cartesian_product >= 202207L views::as_rvalue P2446R2 13.1 __cpp_lib_ranges_as_rvalue >= 202207L cbegin should always return a constant iterator P2278R4 13.1 __cpp_lib_ranges_as_const >= 202207L ranges::to P1206R7 14.1 (ranges::to function) __cpp_lib_containers_ranges >= 202202L, __cpp_lib_ranges_to_container >= 202202L Ranges iterators as inputs to non-Ranges algorithms P2408R5 __cpp_lib_algorithm_iterator_requirements >= 202207L Pipe support for user-defined range adaptors P2387R3 13.1 __cpp_lib_bind_pack >= 202202L, __cpp_lib_ranges >= 202202L ranges::iota, ranges::shift_left, and ranges::shift_right P2440R1 13.1 (ranges::iota) __cpp_lib_ranges_iota >= 202202L, __cpp_lib_shift >= 202202L ranges::find_last P1223R5 13.1 __cpp_lib_ranges_find_last >= 202207L ranges::contains P2302R4 13.1 __cpp_lib_ranges_contains >= 202207L Making multi-param constructors of views explicit P2711R1 ranges::fold P2322R6 13.1 __cpp_lib_ranges_fold >= 202207L Relaxing Ranges Just A Smidge P2609R3 14.3 __cpp_lib_ranges >= 202302L d209 1 a209 1 d220 1 a220 1 d231 1 a231 1 d252 1 a252 1 d263 1 a263 1 d275 1 a275 1 d284 1 d287 1 a287 1 d291 1 a291 1 13.1 d296 1 d299 1 a299 1 d303 1 a303 6 13.1 (missing changes to std::tuple) 14.1 (complete) a307 186 Move-only types for equality_comparable_with, totally_ordered_with, and three_way_comparable_with P2404R3 __cpp_lib_concepts >= 202207L A trait for implicit lifetime types P2674R1 __cpp_lib_is_implicit_lifetime >= 202302L common_reference_t of reference_wrapper Should Be a Reference Type P2655R3 __cpp_lib_common_reference >= 202302L Deprecate numeric_limits::has_denorm P2614R2 Containers Iterator pair constructors for stack and queue P1425R4 12.1 __cpp_lib_adaptor_iterator_pair_constructor >= 202106L Stop overconstraining allocators in container deduction guides P1518R2 12.1 Heterogeneous erasure overloads for associative containers P2077R3 __cpp_lib_associative_heterogeneous_erasure >= 202110L <flat_map> P0429R9 __cpp_lib_flat_map >= 202207L <flat_set> P1222R4 __cpp_lib_flat_set >= 202207L mdspan P0009R18 __cpp_lib_mdspan >= 202207L index_type & size_type in mdspan P2599R2 __cpp_lib_mdspan >= 202207L mdspan: rename pointer and contiguous P2604R0 __cpp_lib_mdspan >= 202207L Add the missing empty to mdspan P2613R1 __cpp_lib_mdspan >= 202207L layout_stride static extents default constructor fix P2763R1 d316 1 a316 1 d327 1 a327 1 d338 1 a338 1 d349 1 a349 1 d358 2 a359 6 std::string::substr() && P2438R2 a360 2 a362 1 d364 1 a364 1 std::format improvements d366 2 a367 2 P2216R3 d370 2 a371 2 13.1 __cpp_lib_format >= 202106L d375 1 d377 2 a378 6 Add support for std::generator-like types to std::format P2418R2 d381 2 a382 15 13.1 __cpp_lib_format >= 202110L Expose std::basic-format-string<charT, Args...> P2508R1 13.1 (feature test macro not updated) __cpp_lib_format >= 202207L d387 1 d389 2 a390 5 Clarify handling of encodings in localized formatting of chrono types P2419R2 d394 1 a394 91 __cpp_lib_format >= 202207L Formatting pointers P2510R3 13.2 (feature test macro not defined) __cpp_lib_format >= 202207L Formatting Ranges P2286R8 __cpp_lib_format_ranges >= 202207L Improve default container formatting P2585R1 __cpp_lib_format_ranges >= 202207L Formatted output P2093R14 14.1 __cpp_lib_print >= 202207L Should the output of std::print to a terminal be synchronized with the underlying stream? P2539R3 14.1 Formatting thread::id and stacktrace P2693R1 14.1 __cpp_lib_formatters >= 202302L Add Constexpr Modifiers to Functions to_chars and from_chars for Integral Types in <charconv> Header P2291R3 13.1 __cpp_lib_constexpr_charconv >= 202207L d406 1 a406 1 d417 1 a417 1 d428 1 a428 1 d439 1 a439 1 d450 1 a450 1 a458 11 Monadic operations for std::expected P2505R5 13.1 __cpp_lib_expected >= 202211L d461 1 a461 1 a469 26 Compatibility between tuple, pair and tuple-like objects P2165R4 14.1 __cpp_lib_tuple_like >= 202207L Default Arguments for pair's Forwarding Constructor P1951R1 14.1 d472 1 a472 1 d483 1 a483 1 d494 1 a494 1 d505 1 a505 1 d516 1 a516 1 a524 22 A more constexpr bitset P2417R2 13.1 __cpp_lib_constexpr_bitset >= 202207L Extended floating-point types and standard names P1467R9 13.1 d527 1 a527 1 d538 1 a538 1 d549 1 a549 1 d560 1 a560 1 a567 101 Easy [utilities], [ranges], and [iterators] P1642R11 13.1 Providing size feedback in the Allocator interface P0401R6 __cpp_lib_allocate_at_least >= 202306L Disallow User Specialization of allocator_traits P2652R2 Explicit lifetime management P2590R2 __cpp_lib_start_lifetime_as >= 202207L Fixing std::start_lifetime_as and std::start_lifetime_as_array P2679R2 out_ptr - a scalable output pointer abstraction P1132R8 14.1 __cpp_lib_out_ptr >= 202106L barrier's phase completion guarantees P2588R3 __cpp_lib_barrier >= 202302L Standard Library Modules std and std.compat P2465R3 __cpp_lib_modules >= 202207L @