From: Tomasz KamiƄski Date: Mon, 6 Jul 2026 14:35:46 +0000 (+0200) Subject: libstdc++: Add _GLIBCXX_RESOLVE_LIB_DEFECTS comments for 2023 issues. X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0487ae7658d2b9dfc82aeeb1c52ff6f034caa37b;p=thirdparty%2Fgcc.git libstdc++: Add _GLIBCXX_RESOLVE_LIB_DEFECTS comments for 2023 issues. Covers issues affecting pre-C++23 features that was accepted during meetings in year 2023. libstdc++-v3/ChangeLog: * include/bits/version.def (allocate_at_least): Add comment listing papers adding values and LWG3887. * include/bits/stl_iterator.h: Add comment for LWG3953. * include/std/format: Add comment for LWG3892. * include/std/type_traits: Add comment for LWG3655. --- diff --git a/libstdc++-v3/include/bits/stl_iterator.h b/libstdc++-v3/include/bits/stl_iterator.h index 747e4a44c27..f5f2abbb8b6 100644 --- a/libstdc++-v3/include/bits/stl_iterator.h +++ b/libstdc++-v3/include/bits/stl_iterator.h @@ -2131,6 +2131,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return *this; } + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 3953. iter_move for common_iterator and ... should return decltype(auto) constexpr decltype(auto) operator++(int) { @@ -2454,6 +2456,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return *this; } + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 3953. iter_move for ... and counted_iterator should return decltype(auto) constexpr decltype(auto) operator++(int) { diff --git a/libstdc++-v3/include/bits/version.def b/libstdc++-v3/include/bits/version.def index 81484ad2f75..d14d4f4ef25 100644 --- a/libstdc++-v3/include/bits/version.def +++ b/libstdc++-v3/include/bits/version.def @@ -89,6 +89,9 @@ ftms = { }; ftms = { + // 202106 P0401R6 Providing size feedback in the Allocator interface + // 202302 P2652R2 Disallow user specialization of allocator_traits + // LWG3887 Version macro for allocate_at_least name = allocate_at_least; values = { v = 202302; diff --git a/libstdc++-v3/include/std/format b/libstdc++-v3/include/std/format index dd275b6b817..8e7702d76df 100644 --- a/libstdc++-v3/include/std/format +++ b/libstdc++-v3/include/std/format @@ -5888,6 +5888,8 @@ namespace __format constexpr void _M_parse() { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 3892. Incorrect formatting of nested ranges and tuples basic_format_parse_context<_CharT> __pc({}); if (_M_formatter.parse(__pc) != __pc.end()) __format::__failed_to_parse_format_spec(); @@ -6174,6 +6176,8 @@ namespace __format auto __parse_val = [&](_String_view __nfs = _String_view()) { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 3892. Incorrect formatting of nested ranges and tuples basic_format_parse_context<_CharT> __npc(__nfs); if (_M_fval.parse(__npc) != __npc.end()) __format::__failed_to_parse_format_spec(); diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits index c56fae4a5bf..2b3f10016a2 100644 --- a/libstdc++-v3/include/std/type_traits +++ b/libstdc++-v3/include/std/type_traits @@ -2849,6 +2849,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { using _Argval = __remove_cvref_t<_Arg>; using _MemPtr = _Res _Class::*; + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 3655. The INVOKE operation and union types using type = typename __conditional_t<__or_, is_base_of<_Class, _Argval>>::value, __result_of_memobj_ref<_MemPtr, _Arg>,