aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
Diffstat (limited to 'libstdc++-v3')
-rw-r--r--libstdc++-v3/ChangeLog76
-rw-r--r--libstdc++-v3/acinclude.m44
-rwxr-xr-xlibstdc++-v3/configure4
-rw-r--r--libstdc++-v3/configure.host11
-rw-r--r--libstdc++-v3/doc/html/manual/source_code_style.html2
-rw-r--r--libstdc++-v3/doc/html/manual/status.html57
-rw-r--r--libstdc++-v3/doc/xml/manual/status_cxx2017.xml25
-rw-r--r--libstdc++-v3/doc/xml/manual/status_cxx2023.xml45
-rw-r--r--libstdc++-v3/include/bits/version.def2
-rw-r--r--libstdc++-v3/include/bits/version.h2
-rw-r--r--libstdc++-v3/include/c_global/ccomplex2
-rw-r--r--libstdc++-v3/include/c_global/ciso64618
-rw-r--r--libstdc++-v3/include/c_global/cstdalign2
-rw-r--r--libstdc++-v3/include/c_global/cstdbool2
-rw-r--r--libstdc++-v3/include/c_global/ctgmath2
-rw-r--r--libstdc++-v3/include/std/expected4
-rw-r--r--libstdc++-v3/include/std/mutex2
-rw-r--r--libstdc++-v3/python/hook.in12
-rw-r--r--libstdc++-v3/testsuite/18_support/headers/ciso646/macros-2.cc7
-rw-r--r--libstdc++-v3/testsuite/18_support/headers/ciso646/macros.cc1
-rw-r--r--libstdc++-v3/testsuite/20_util/expected/119714.cc9
-rw-r--r--libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/typedefs.cc28
-rw-r--r--libstdc++-v3/testsuite/lib/libstdc++.exp13
23 files changed, 238 insertions, 92 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index a4c2d7c..450b931 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,79 @@
+2025-05-12 Thomas Schwinge <tschwinge@baylibre.com>
+
+ PR target/119645
+ * configure.host [GCN, nvptx] (atomicity_dir): Don't set.
+
+2025-05-12 Patrick Palka <ppalka@redhat.com>
+
+ PR libstdc++/119714
+ PR libstdc++/112490
+ * include/std/expected (expected::operator==): Replace
+ non-dependent std::expected function parameter with a dependent
+ one of type expected<_Vp, _Er> where _Vp matches _Tp.
+ * testsuite/20_util/expected/119714.cc: New test.
+
+2025-05-12 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/120187
+ * include/c_global/ciso646: Only give deprecated warning for
+ C++20 and later.
+ * include/c_global/ccomplex: Add @since to Doxygen comment.
+ * include/c_global/cstdalign: Likewise.
+ * include/c_global/cstdbool: Likewise.
+ * include/c_global/ctgmath: Likewise.
+ * testsuite/18_support/headers/ciso646/macros.cc: Remove
+ dg-warning for c++17_only effective target.
+ * testsuite/18_support/headers/ciso646/macros-2.cc: New test.
+
+2025-05-12 Jonathan Wakely <jwakely@redhat.com>
+
+ * doc/xml/manual/status_cxx2023.xml: Update status of proposals
+ implemented after GCC 14.2 release.
+ * doc/html/manual/status.html: Regenerate.
+
+2025-05-12 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/120198
+ * include/bits/version.def (scoped_lock): Do not depend on
+ gthreads or hosted.
+ * include/bits/version.h: Regenerate.
+ * include/std/mutex (scoped_lock): Update comment.
+ * testsuite/30_threads/scoped_lock/requirements/typedefs.cc:
+ Remove dg-require-gthreads and use custom lockable type instead
+ of std::mutex. Check that typedef is only present for a single
+ template argument.
+
+2025-05-12 Thomas Schwinge <tschwinge@baylibre.com>
+
+ PR libstdc++/70560
+ PR libstdc++/119667
+ * acinclude.m4 (GLIBCXX_ENABLE_BACKTRACE): Use '__SIZE_TYPE__'
+ instead of 'size_t'.
+ * configure: Regenerate.
+
+2025-05-12 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/118260
+ * python/hook.in: Suppress output from gdb.execute calls to
+ register skips.
+
+2025-05-12 Jonathan Wakely <jwakely@redhat.com>
+
+ * doc/xml/manual/status_cxx2017.xml: Update status for
+ std::to_chars and std::from_chars.
+ * doc/html/manual/*: Regenerate.
+
+2025-05-12 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/65909
+ * testsuite/lib/libstdc++.exp (check_v3_target_namedlocale):
+ Hardcode the locale name instead of passing it to the
+ executable. Do not hardcode buffer size for string.
+
+2025-05-10 Alexandre Oliva <oliva@adacore.com>
+
+ * src/c++23/print.cc [__VXWORKS__]: Include ioLib.h.
+
2025-05-09 Tomasz Kamiński <tkaminsk@redhat.com>
* include/bits/chrono_io.h (__formatter_chrono::_M_format_to):
diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index 204bed5b..d1ecb1a 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -5304,7 +5304,7 @@ AC_DEFUN([GLIBCXX_ENABLE_BACKTRACE], [
[AC_TRY_LINK([], [
int i = 0;
int* p = &i;
- size_t s = 0;
+ __SIZE_TYPE__ s = 0;
// backtrace_atomic_load_pointer
void* vp = __atomic_load_n(&p, __ATOMIC_ACQUIRE);
// backtrace_atomic_load_int
@@ -5331,7 +5331,7 @@ int main()
{
int i = 0;
int* p = &i;
- size_t s = 0;
+ __SIZE_TYPE__ s = 0;
// backtrace_atomic_load_pointer
void* vp = __atomic_load_n(&p, __ATOMIC_ACQUIRE);
// backtrace_atomic_load_int
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index 0529ff5..d6891e5 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -53568,7 +53568,7 @@ main ()
int i = 0;
int* p = &i;
- size_t s = 0;
+ __SIZE_TYPE__ s = 0;
// backtrace_atomic_load_pointer
void* vp = __atomic_load_n(&p, __ATOMIC_ACQUIRE);
// backtrace_atomic_load_int
@@ -53607,7 +53607,7 @@ int main()
{
int i = 0;
int* p = &i;
- size_t s = 0;
+ __SIZE_TYPE__ s = 0;
// backtrace_atomic_load_pointer
void* vp = __atomic_load_n(&p, __ATOMIC_ACQUIRE);
// backtrace_atomic_load_int
diff --git a/libstdc++-v3/configure.host b/libstdc++-v3/configure.host
index 3cd1bb1..87a1822 100644
--- a/libstdc++-v3/configure.host
+++ b/libstdc++-v3/configure.host
@@ -370,21 +370,10 @@ case "${host}" in
;;
esac
;;
- amdgcn-*-amdhsa)
- # To avoid greater pain elsewhere, force use of '__atomic' builtins,
- # regardless of the outcome of 'configure' checks; see PR119645
- # "GCN, nvptx: libstdc++ 'checking for atomic builtins [...]... no'".
- atomicity_dir=cpu/generic/atomicity_builtins
- ;;
arm*-*-freebsd*)
port_specific_symbol_files="\$(srcdir)/../config/os/gnu-linux/arm-eabi-extra.ver"
;;
nvptx-*-none)
- # To avoid greater pain elsewhere, force use of '__atomic' builtins,
- # regardless of the outcome of 'configure' checks; see PR119645
- # "GCN, nvptx: libstdc++ 'checking for atomic builtins [...]... no'".
- atomicity_dir=cpu/generic/atomicity_builtins
-
# For 'make all-target-libstdc++-v3', re 'alloca'/VLA usage:
EXTRA_CFLAGS="${EXTRA_CFLAGS} -mfake-ptx-alloca"
OPTIMIZE_CXXFLAGS="${OPTIMIZE_CXXFLAGS} -mfake-ptx-alloca"
diff --git a/libstdc++-v3/doc/html/manual/source_code_style.html b/libstdc++-v3/doc/html/manual/source_code_style.html
index b0b2268..a66e3a0 100644
--- a/libstdc++-v3/doc/html/manual/source_code_style.html
+++ b/libstdc++-v3/doc/html/manual/source_code_style.html
@@ -474,7 +474,7 @@
<br />
      Examples:  <code class="code">_M_num_elements  _M_initialize ()</code><br />
<br />
-      Static data members, constants, and enumerations: <code class="literal">_S_.*</code><br />
+      Static data and function members, constants, and enumerations: <code class="literal">_S_.*</code><br />
<br />
      Examples: <code class="code">_S_max_elements  _S_default_value</code><br />
<br />
diff --git a/libstdc++-v3/doc/html/manual/status.html b/libstdc++-v3/doc/html/manual/status.html
index 3d55e265..5ca3521 100644
--- a/libstdc++-v3/doc/html/manual/status.html
+++ b/libstdc++-v3/doc/html/manual/status.html
@@ -927,7 +927,22 @@ since C++14 and the implementation is complete.
<span class="emphasis"><em>23</em></span>
</td><td colspan="3" align="left">
<span class="emphasis"><em>General utilities</em></span>
- </td></tr><tr><td align="left">23.1</td><td align="left">General</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.2</td><td align="left">Utility components</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.2.1</td><td align="left">Header <code class="code">&lt;utility&gt;</code> synopsis</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.2.2</td><td align="left">Operators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.2.3</td><td align="left"><code class="code">swap</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.2.4</td><td align="left"><code class="code">exchange</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.2.5</td><td align="left">Forward/move helpers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.2.6</td><td align="left">Function template <code class="code">as_const</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.2.7</td><td align="left">Function template <code class="code">declval</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.2.8</td><td align="left">Primitive numeric output conversion</td><td align="left">Partial</td><td align="left"> </td></tr><tr><td align="left">23.2.9</td><td align="left">Primitive numeric input conversion</td><td align="left">Partial</td><td align="left"> </td></tr><tr><td align="left">23.3</td><td align="left">Compile-time integer sequences</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4</td><td align="left">Pairs</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.5</td><td align="left">Tuples</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.6</td><td align="left">Optional objects</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.7</td><td align="left">Variants</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.8</td><td align="left">Storage for any type</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.9</td><td align="left">Bitsets</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10</td><td align="left">Memory</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10.1</td><td align="left">In general</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.10.2</td><td align="left">Header <code class="code">&lt;memory&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10.3</td><td align="left">Pointer traits</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10.4</td><td align="left">Pointer safety</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10.5</td><td align="left">Align</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10.6</td><td align="left">Allocator argument tag</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10.7</td><td align="left"><code class="code">uses_allocator</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10.8</td><td align="left">Allocator traits</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10.9</td><td align="left">The default allocator</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10.10</td><td align="left">Specialized algorithms</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10.11</td><td align="left">C library memory allocation</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.11</td><td align="left">Smart pointers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.11.1</td><td align="left">Class template <code class="code">unique_ptr</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.11.2</td><td align="left">Shared-ownership pointers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.12</td><td align="left">Memory resources</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.12.1</td><td align="left">Header <code class="code">&lt;memory_resource&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.12.2</td><td align="left">Class <code class="code">memory_resource</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.12.3</td><td align="left">Class template <code class="code">polymorphic_allocator</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.12.4</td><td align="left">Access to program-wide <code class="code">memory_resource</code> objects</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.12.5</td><td align="left">Pool resource classes</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.12.6</td><td align="left">Class <code class="code">monotonic_buffer_resource</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.13</td><td align="left">Class template <code class="code">scoped_allocator_adaptor</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14</td><td align="left">Function objects</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.14.1</td><td align="left">Header <code class="code">&lt;functional&gt;</code> synopsis</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.14.2</td><td align="left">Definitions</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.14.3</td><td align="left">Requirements</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.14.4</td><td align="left">Function template <code class="code">invoke</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.5</td><td align="left">Class template <code class="code">reference_wrapper</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.6</td><td align="left">Arithmetic operation</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.7</td><td align="left">Comparisons</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.8</td><td align="left">Logical operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.9</td><td align="left">Bitwise operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.10</td><td align="left">Function template <code class="code">not_fn</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.11</td><td align="left">Function object binders</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.12</td><td align="left">Function template <code class="code">mem_fn</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.13</td><td align="left">Polymorphic function wrappers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.14</td><td align="left">Searchers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.15</td><td align="left">Class template <code class="code">hash</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.15</td><td align="left">Metaprogramming and type traits</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.15.1</td><td align="left">Requirements</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.15.2</td><td align="left">Header <code class="code">&lt;type_traits&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.15.3</td><td align="left">Helper classes</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.15.4</td><td align="left">Unary Type Traits</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.15.5</td><td align="left">Type property queries</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.15.6</td><td align="left">Relationships between types</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.15.7</td><td align="left">Transformations between types</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.15.8</td><td align="left">Logical operator traits</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.16</td><td align="left">Compile-time rational arithmetic</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.17.1</td><td align="left">In general</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.17.2</td><td align="left">Header <code class="code">&lt;chrono&gt;</code> synopsis</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.17</td><td align="left">Time utilities</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.17.3</td><td align="left">Clock requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.17.4</td><td align="left">Time-related traits</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.17.5</td><td align="left">Class template <code class="code">duration</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.17.6</td><td align="left">Class template <code class="code">time_point</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.17.7</td><td align="left">Clocks</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.17.8</td><td align="left">Header <code class="code">&lt;ctime&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.18</td><td align="left">Class <code class="code">type_index</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.19</td><td align="left">Execution policies</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.19.1</td><td align="left">In general</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.19.2</td><td align="left">Header <code class="code">&lt;execution&gt;</code> synopsis</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.19.3</td><td align="left">Execution policy type trait</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.19.4</td><td align="left">Sequenced execution policy</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.19.5</td><td align="left">Parallel execution policy</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.19.6</td><td align="left">Parallel and unsequenced execution policy</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.19.7</td><td align="left">Execution policy objects</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">
+ </td></tr><tr><td align="left">23.1</td><td align="left">General</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.2</td><td align="left">Utility components</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.2.1</td><td align="left">Header <code class="code">&lt;utility&gt;</code> synopsis</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.2.2</td><td align="left">Operators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.2.3</td><td align="left"><code class="code">swap</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.2.4</td><td align="left"><code class="code">exchange</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.2.5</td><td align="left">Forward/move helpers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.2.6</td><td align="left">Function template <code class="code">as_const</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.2.7</td><td align="left">Function template <code class="code">declval</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.2.8</td><td align="left">Primitive numeric output conversion</td><td align="left">Y</td><td align="left">
+ Floating-point types up to 64-bit are formatted using
+ <a class="link" href="https://github.com/ulfjack/ryu" target="_top">Ryu</a>.
+ Types with greater precision are formatted using the C library
+ (<code class="function">sprintf</code> and conditionally
+ <code class="function">strfromf128</code>).
+ For powerpc64le-unknown-linux-gnu <code class="function">__sprintfieee128</code>
+ must be provided by Glibc.
+ </td></tr><tr><td align="left">23.2.9</td><td align="left">Primitive numeric input conversion</td><td align="left">Y</td><td align="left">
+ Floating-point types up to 64-bit are parsed using
+ <a class="link" href="https://github.com/fastfloat/fast_float" target="_top">fast_float</a>.
+ Types with greater precision are parsed using the C library
+ (<code class="function">strtold</code>).
+ For powerpc64le-unknown-linux-gnu <code class="function">__strtoieee128</code>
+ must be provided by Glibc.
+ </td></tr><tr><td align="left">23.3</td><td align="left">Compile-time integer sequences</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4</td><td align="left">Pairs</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.5</td><td align="left">Tuples</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.6</td><td align="left">Optional objects</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.7</td><td align="left">Variants</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.8</td><td align="left">Storage for any type</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.9</td><td align="left">Bitsets</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10</td><td align="left">Memory</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10.1</td><td align="left">In general</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.10.2</td><td align="left">Header <code class="code">&lt;memory&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10.3</td><td align="left">Pointer traits</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10.4</td><td align="left">Pointer safety</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10.5</td><td align="left">Align</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10.6</td><td align="left">Allocator argument tag</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10.7</td><td align="left"><code class="code">uses_allocator</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10.8</td><td align="left">Allocator traits</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10.9</td><td align="left">The default allocator</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10.10</td><td align="left">Specialized algorithms</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.10.11</td><td align="left">C library memory allocation</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.11</td><td align="left">Smart pointers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.11.1</td><td align="left">Class template <code class="code">unique_ptr</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.11.2</td><td align="left">Shared-ownership pointers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.12</td><td align="left">Memory resources</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.12.1</td><td align="left">Header <code class="code">&lt;memory_resource&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.12.2</td><td align="left">Class <code class="code">memory_resource</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.12.3</td><td align="left">Class template <code class="code">polymorphic_allocator</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.12.4</td><td align="left">Access to program-wide <code class="code">memory_resource</code> objects</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.12.5</td><td align="left">Pool resource classes</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.12.6</td><td align="left">Class <code class="code">monotonic_buffer_resource</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.13</td><td align="left">Class template <code class="code">scoped_allocator_adaptor</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14</td><td align="left">Function objects</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.14.1</td><td align="left">Header <code class="code">&lt;functional&gt;</code> synopsis</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.14.2</td><td align="left">Definitions</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.14.3</td><td align="left">Requirements</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.14.4</td><td align="left">Function template <code class="code">invoke</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.5</td><td align="left">Class template <code class="code">reference_wrapper</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.6</td><td align="left">Arithmetic operation</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.7</td><td align="left">Comparisons</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.8</td><td align="left">Logical operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.9</td><td align="left">Bitwise operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.10</td><td align="left">Function template <code class="code">not_fn</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.11</td><td align="left">Function object binders</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.12</td><td align="left">Function template <code class="code">mem_fn</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.13</td><td align="left">Polymorphic function wrappers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.14</td><td align="left">Searchers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.14.15</td><td align="left">Class template <code class="code">hash</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.15</td><td align="left">Metaprogramming and type traits</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.15.1</td><td align="left">Requirements</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.15.2</td><td align="left">Header <code class="code">&lt;type_traits&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.15.3</td><td align="left">Helper classes</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.15.4</td><td align="left">Unary Type Traits</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.15.5</td><td align="left">Type property queries</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.15.6</td><td align="left">Relationships between types</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.15.7</td><td align="left">Transformations between types</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.15.8</td><td align="left">Logical operator traits</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.16</td><td align="left">Compile-time rational arithmetic</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.17.1</td><td align="left">In general</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.17.2</td><td align="left">Header <code class="code">&lt;chrono&gt;</code> synopsis</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.17</td><td align="left">Time utilities</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.17.3</td><td align="left">Clock requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.17.4</td><td align="left">Time-related traits</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.17.5</td><td align="left">Class template <code class="code">duration</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.17.6</td><td align="left">Class template <code class="code">time_point</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.17.7</td><td align="left">Clocks</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.17.8</td><td align="left">Header <code class="code">&lt;ctime&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.18</td><td align="left">Class <code class="code">type_index</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.19</td><td align="left">Execution policies</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.19.1</td><td align="left">In general</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.19.2</td><td align="left">Header <code class="code">&lt;execution&gt;</code> synopsis</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.19.3</td><td align="left">Execution policy type trait</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.19.4</td><td align="left">Sequenced execution policy</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.19.5</td><td align="left">Parallel execution policy</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.19.6</td><td align="left">Parallel and unsequenced execution policy</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.19.7</td><td align="left">Execution policy objects</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">
<span class="emphasis"><em>24</em></span>
</td><td colspan="3" align="left">
<span class="emphasis"><em>Strings</em></span>
@@ -1832,13 +1847,15 @@ or any notes about the implementation.
<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2278r4.html" target="_top">
P2278R4
</a>
- </td><td align="center"> 13.1 </td><td align="left"> <code class="code">__cpp_lib_ranges_as_const &gt;= 202207L</code> </td></tr><tr bgcolor="#B0B0B0"><td align="left"> <code class="code">ranges::to</code> </td><td align="left">
+ </td><td align="center"> 13.1 </td><td align="left"> <code class="code">__cpp_lib_ranges_as_const &gt;= 202207L</code> </td></tr><tr><td align="left"> <code class="code">ranges::to</code> </td><td align="left">
<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1206r7.pdf" target="_top">
P1206R7
</a>
- </td><td align="center"> 14.1 (<code class="code">ranges::to</code> function) </td><td align="left">
- <code class="code">__cpp_lib_containers_ranges &gt;= 202202L</code>,
- <code class="code">__cpp_lib_ranges_to_container &gt;= 202202L</code>
+ </td><td align="center">
+ <div class="informaltable"><table class="informaltable" border="0"><colgroup><col /></colgroup><tbody><tr><td> 14.1 (<code class="code">ranges::to</code> function) </td></tr><tr><td> 15.1 (new members in containers) </td></tr></tbody></table></div>
+ </td><td align="left">
+ <code class="code">__cpp_lib_ranges_to_container &gt;= 202202L</code>,
+ <code class="code">__cpp_lib_containers_ranges &gt;= 202202L</code>
</td></tr><tr bgcolor="#C8B0B0"><td align="left"> Ranges iterators as inputs to non-Ranges algorithms </td><td align="left">
<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2408r5.html" target="_top">
P2408R5
@@ -1878,11 +1895,11 @@ or any notes about the implementation.
<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2322r6.html" target="_top">
P2322R6
</a>
- </td><td align="center"> 13.1 </td><td align="left"> <code class="code">__cpp_lib_ranges_fold &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Relaxing Ranges Just A Smidge</td><td align="left">
+ </td><td align="center"> 13.1 </td><td align="left"> <code class="code">__cpp_lib_ranges_fold &gt;= 202207L</code> </td></tr><tr><td align="left"> Relaxing Ranges Just A Smidge</td><td align="left">
<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2609r3.html" target="_top">
P2609R3
</a>
- </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_ranges &gt;= 202302L</code> </td></tr><tr><td colspan="4" align="left">
+ </td><td align="center"> 14.3 </td><td align="left"> <code class="code">__cpp_lib_ranges &gt;= 202302L</code> </td></tr><tr><td colspan="4" align="left">
<span class="bold"><strong>Compile-time programming</strong></span>
</td></tr><tr><td align="left"> A proposal for a type trait to detect scoped enumerations </td><td align="left">
<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1048r1.pdf" target="_top">
@@ -1912,11 +1929,11 @@ or any notes about the implementation.
<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p0533r9.pdf" target="_top">
P0533R9
</a>
- </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_constexpr_cmath &gt;= 202202L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Deprecate std::aligned_storage and std::aligned_union </td><td align="left">
+ </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_constexpr_cmath &gt;= 202202L</code> </td></tr><tr><td align="left"> Deprecate std::aligned_storage and std::aligned_union </td><td align="left">
<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1413r3.pdf" target="_top">
P1413R3
</a>
- </td><td align="center"> </td><td align="left"> </td></tr><tr><td align="left"> A type trait to detect reference binding to temporary </td><td align="left">
+ </td><td align="center"> 13.1 </td><td align="left"> </td></tr><tr><td align="left"> A type trait to detect reference binding to temporary </td><td align="left">
<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2255r2.html" target="_top">
P2255R2
</a>
@@ -1958,15 +1975,15 @@ or any notes about the implementation.
<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2077r3.html" target="_top">
P2077R3
</a>
- </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_associative_heterogeneous_erasure &gt;= 202110L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> <code class="code">&lt;flat_map&gt;</code> </td><td align="left">
+ </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_associative_heterogeneous_erasure &gt;= 202110L</code> </td></tr><tr><td align="left"> <code class="code">&lt;flat_map&gt;</code> </td><td align="left">
<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p0429r9.pdf" target="_top">
P0429R9
</a>
- </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_flat_map &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> <code class="code">&lt;flat_set&gt;</code> </td><td align="left">
+ </td><td align="center"> 15.1 </td><td align="left"> <code class="code">__cpp_lib_flat_map &gt;= 202207L</code> </td></tr><tr><td align="left"> <code class="code">&lt;flat_set&gt;</code> </td><td align="left">
<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1222r4.pdf" target="_top">
P1222R4
</a>
- </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_flat_set &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> <code class="code">mdspan</code> </td><td align="left">
+ </td><td align="center"> 15.1 </td><td align="left"> <code class="code">__cpp_lib_flat_set &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> <code class="code">mdspan</code> </td><td align="left">
<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p0009r18.html" target="_top">
P0009R18
</a>
@@ -2033,27 +2050,29 @@ or any notes about the implementation.
<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2508r1.html" target="_top">
P2508R1
</a>
- </td><td align="center"> 13.1 (feature test macro not defined)</td><td align="left"> <code class="code">__cpp_lib_format &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left">
+ </td><td align="center"> 13.1 (feature test macro not updated until 15.1) </td><td align="left"> <code class="code">__cpp_lib_format &gt;= 202207L</code> </td></tr><tr><td align="left">
Clarify handling of encodings in localized formatting of chrono types
</td><td align="left">
<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2419r2.html" target="_top">
P2419R2
</a>
- </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_format &gt;= 202207L</code> </td></tr><tr><td align="left">
+ </td><td align="center"> 15.1 </td><td align="left"> <code class="code">__cpp_lib_format &gt;= 202207L</code> </td></tr><tr><td align="left">
Formatting pointers
</td><td align="left">
<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2510r3.pdf" target="_top">
P2510R3
</a>
- </td><td align="center"> 13.2 (feature test macro not defined)</td><td align="left"> <code class="code">__cpp_lib_format &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Formatting Ranges </td><td align="left">
+ </td><td align="center"> 13.2 (feature test macro not updated until 15.1) </td><td align="left"> <code class="code">__cpp_lib_format &gt;= 202207L</code> </td></tr><tr><td align="left"> Formatting Ranges </td><td align="left">
<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2286r8.html" target="_top">
P2286R8
</a>
- </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_format_ranges &gt;= 202207L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Improve default container formatting </td><td align="left">
+ </td><td align="center">
+ <div class="informaltable"><table class="informaltable" border="0"><colgroup><col /></colgroup><tbody><tr><td> 15.1 (changes to adaptors missing) </td></tr><tr><td> 15.2 (complete) </td></tr></tbody></table></div>
+ </td><td align="left"> <code class="code">__cpp_lib_format_ranges &gt;= 202207L</code> </td></tr><tr><td align="left"> Improve default container formatting </td><td align="left">
<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2585r1.html" target="_top">
P2585R1
</a>
- </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_format_ranges &gt;= 202207L</code> </td></tr><tr><td align="left"> Formatted output </td><td align="left">
+ </td><td align="center"> 15.1 (feature test macro not defined until 15.2) </td><td align="left"> <code class="code">__cpp_lib_format_ranges &gt;= 202207L</code> </td></tr><tr><td align="left"> Formatted output </td><td align="left">
<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2093r14.html" target="_top">
P2093R14
</a>
@@ -2197,13 +2216,13 @@ or any notes about the implementation.
<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2588r3.html" target="_top">
P2588R3
</a>
- </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_barrier &gt;= 202302L</code> </td></tr><tr bgcolor="#C8B0B0"><td align="left">
+ </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_barrier &gt;= 202302L</code> </td></tr><tr><td align="left">
Standard Library Modules <code class="code">std</code> and <code class="code">std.compat</code>
</td><td align="left">
<a class="link" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2465r3.pdf" target="_top">
P2465R3
</a>
- </td><td align="center"> </td><td align="left"> <code class="code">__cpp_lib_modules &gt;= 202207L</code> </td></tr></tbody></table></div></div><br class="table-break" /></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.tr1"></a>C++ TR1</h3></div></div></div><p>
+ </td><td align="center"> 15.1 </td><td align="left"> <code class="code">__cpp_lib_modules &gt;= 202207L</code> </td></tr></tbody></table></div></div><br class="table-break" /></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.tr1"></a>C++ TR1</h3></div></div></div><p>
This table is based on the table of contents of ISO/IEC DTR 19768,
Doc No: N1836=05-0096, Date: 2005-06-24,
"Draft Technical Report on C++ Library Extensions".
diff --git a/libstdc++-v3/doc/xml/manual/status_cxx2017.xml b/libstdc++-v3/doc/xml/manual/status_cxx2017.xml
index 48a0317..c90f91e 100644
--- a/libstdc++-v3/doc/xml/manual/status_cxx2017.xml
+++ b/libstdc++-v3/doc/xml/manual/status_cxx2017.xml
@@ -1183,14 +1183,31 @@ since C++14 and the implementation is complete.
<row>
<entry>23.2.8</entry>
<entry>Primitive numeric output conversion</entry>
- <entry>Partial</entry>
- <entry/>
+ <entry>Y</entry>
+ <entry>
+ Floating-point types up to 64-bit are formatted using
+ <link xmlns:xlink="http://www.w3.org/1999/xlink"
+ xlink:href="https://github.com/ulfjack/ryu">Ryu</link>.
+ Types with greater precision are formatted using the C library
+ (<function>sprintf</function> and conditionally
+ <function>strfromf128</function>).
+ For powerpc64le-unknown-linux-gnu <function>__sprintfieee128</function>
+ must be provided by Glibc.
+ </entry>
</row>
<row>
<entry>23.2.9</entry>
<entry>Primitive numeric input conversion</entry>
- <entry>Partial</entry>
- <entry/>
+ <entry>Y</entry>
+ <entry>
+ Floating-point types up to 64-bit are parsed using
+ <link xmlns:xlink="http://www.w3.org/1999/xlink"
+ xlink:href="https://github.com/fastfloat/fast_float">fast_float</link>.
+ Types with greater precision are parsed using the C library
+ (<function>strtold</function>).
+ For powerpc64le-unknown-linux-gnu <function>__strtoieee128</function>
+ must be provided by Glibc.
+ </entry>
</row>
<row>
<entry>23.3</entry>
diff --git a/libstdc++-v3/doc/xml/manual/status_cxx2023.xml b/libstdc++-v3/doc/xml/manual/status_cxx2023.xml
index 3c33a35..af40eab 100644
--- a/libstdc++-v3/doc/xml/manual/status_cxx2023.xml
+++ b/libstdc++-v3/doc/xml/manual/status_cxx2023.xml
@@ -312,17 +312,21 @@ or any notes about the implementation.
</row>
<row>
- <?dbhtml bgcolor="#B0B0B0" ?>
<entry> <code>ranges::to</code> </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1206r7.pdf">
P1206R7
</link>
</entry>
- <entry align="center"> 14.1 (<code>ranges::to</code> function) </entry>
+ <entry align="center">
+ <informaltable colsep="0" rowsep="0" rowheader="norowheader" frame="none"><tgroup cols="1"><tbody>
+ <row><entry> 14.1 (<code>ranges::to</code> function) </entry></row>
+ <row><entry> 15.1 (new members in containers) </entry></row>
+ </tbody></tgroup></informaltable>
+ </entry>
<entry>
- <code>__cpp_lib_containers_ranges &gt;= 202202L</code>,
- <code>__cpp_lib_ranges_to_container &gt;= 202202L</code>
+ <code>__cpp_lib_ranges_to_container &gt;= 202202L</code>,
+ <code>__cpp_lib_containers_ranges &gt;= 202202L</code>
</entry>
</row>
@@ -418,14 +422,13 @@ or any notes about the implementation.
</row>
<row>
- <?dbhtml bgcolor="#C8B0B0" ?>
<entry> Relaxing Ranges Just A Smidge</entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2609r3.html">
P2609R3
</link>
</entry>
- <entry align="center"> </entry>
+ <entry align="center"> 14.3 </entry>
<entry> <code>__cpp_lib_ranges &gt;= 202302L</code> </entry>
</row>
@@ -513,14 +516,13 @@ or any notes about the implementation.
</row>
<row>
- <?dbhtml bgcolor="#C8B0B0" ?>
<entry> Deprecate std::aligned_storage and std::aligned_union </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1413r3.pdf">
P1413R3
</link>
</entry>
- <entry align="center"> </entry>
+ <entry align="center"> 13.1 </entry>
<entry />
</row>
@@ -635,26 +637,24 @@ or any notes about the implementation.
</row>
<row>
- <?dbhtml bgcolor="#C8B0B0" ?>
<entry> <code>&lt;flat_map&gt;</code> </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p0429r9.pdf">
P0429R9
</link>
</entry>
- <entry align="center"> </entry>
+ <entry align="center"> 15.1 </entry>
<entry> <code>__cpp_lib_flat_map &gt;= 202207L</code> </entry>
</row>
<row>
- <?dbhtml bgcolor="#C8B0B0" ?>
<entry> <code>&lt;flat_set&gt;</code> </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1222r4.pdf">
P1222R4
</link>
</entry>
- <entry align="center"> </entry>
+ <entry align="center"> 15.1 </entry>
<entry> <code>__cpp_lib_flat_set &gt;= 202207L</code> </entry>
</row>
@@ -823,12 +823,11 @@ or any notes about the implementation.
P2508R1
</link>
</entry>
- <entry align="center"> 13.1 (feature test macro not defined)</entry>
+ <entry align="center"> 13.1 (feature test macro not updated until 15.1) </entry>
<entry> <code>__cpp_lib_format &gt;= 202207L</code> </entry>
</row>
<row>
- <?dbhtml bgcolor="#C8B0B0" ?>
<entry>
Clarify handling of encodings in localized formatting of chrono types
</entry>
@@ -837,7 +836,7 @@ or any notes about the implementation.
P2419R2
</link>
</entry>
- <entry align="center"> </entry>
+ <entry align="center"> 15.1 </entry>
<entry> <code>__cpp_lib_format &gt;= 202207L</code> </entry>
</row>
@@ -850,31 +849,34 @@ or any notes about the implementation.
P2510R3
</link>
</entry>
- <entry align="center"> 13.2 (feature test macro not defined)</entry>
+ <entry align="center"> 13.2 (feature test macro not updated until 15.1) </entry>
<entry> <code>__cpp_lib_format &gt;= 202207L</code> </entry>
</row>
<row>
- <?dbhtml bgcolor="#C8B0B0" ?>
<entry> Formatting Ranges </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2286r8.html">
P2286R8
</link>
</entry>
- <entry align="center"> </entry>
+ <entry align="center">
+ <informaltable colsep="0" rowsep="0" rowheader="norowheader" frame="none"><tgroup cols="1"><tbody>
+ <row><entry> 15.1 (changes to adaptors missing) </entry></row>
+ <row><entry> 15.2 (complete) </entry></row>
+ </tbody></tgroup></informaltable>
+ </entry>
<entry> <code>__cpp_lib_format_ranges &gt;= 202207L</code> </entry>
</row>
<row>
- <?dbhtml bgcolor="#C8B0B0" ?>
<entry> Improve default container formatting </entry>
<entry>
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2585r1.html">
P2585R1
</link>
</entry>
- <entry align="center"> </entry>
+ <entry align="center"> 15.1 (feature test macro not defined until 15.2) </entry>
<entry> <code>__cpp_lib_format_ranges &gt;= 202207L</code> </entry>
</row>
@@ -1249,7 +1251,6 @@ or any notes about the implementation.
</row>
<row>
- <?dbhtml bgcolor="#C8B0B0" ?>
<entry>
Standard Library Modules <code>std</code> and <code>std.compat</code>
</entry>
@@ -1258,7 +1259,7 @@ or any notes about the implementation.
P2465R3
</link>
</entry>
- <entry align="center"> </entry>
+ <entry align="center"> 15.1 </entry>
<entry> <code>__cpp_lib_modules &gt;= 202207L</code> </entry>
</row>
diff --git a/libstdc++-v3/include/bits/version.def b/libstdc++-v3/include/bits/version.def
index f4d3de8..2d34a8d 100644
--- a/libstdc++-v3/include/bits/version.def
+++ b/libstdc++-v3/include/bits/version.def
@@ -679,8 +679,6 @@ ftms = {
values = {
v = 201703;
cxxmin = 17;
- hosted = yes;
- gthread = yes;
};
};
diff --git a/libstdc++-v3/include/bits/version.h b/libstdc++-v3/include/bits/version.h
index d5d75ce..24831f7 100644
--- a/libstdc++-v3/include/bits/version.h
+++ b/libstdc++-v3/include/bits/version.h
@@ -751,7 +751,7 @@
#undef __glibcxx_want_parallel_algorithm
#if !defined(__cpp_lib_scoped_lock)
-# if (__cplusplus >= 201703L) && defined(_GLIBCXX_HAS_GTHREADS) && _GLIBCXX_HOSTED
+# if (__cplusplus >= 201703L)
# define __glibcxx_scoped_lock 201703L
# if defined(__glibcxx_want_all) || defined(__glibcxx_want_scoped_lock)
# define __cpp_lib_scoped_lock 201703L
diff --git a/libstdc++-v3/include/c_global/ccomplex b/libstdc++-v3/include/c_global/ccomplex
index 7044cf7..a39273f 100644
--- a/libstdc++-v3/include/c_global/ccomplex
+++ b/libstdc++-v3/include/c_global/ccomplex
@@ -24,6 +24,8 @@
/** @file include/ccomplex
* This is a Standard C++ Library header.
+ *
+ * @since C++11 (removed in C++20)
*/
#ifndef _GLIBCXX_CCOMPLEX
diff --git a/libstdc++-v3/include/c_global/ciso646 b/libstdc++-v3/include/c_global/ciso646
index a663e04..6dec7df 100644
--- a/libstdc++-v3/include/c_global/ciso646
+++ b/libstdc++-v3/include/c_global/ciso646
@@ -28,6 +28,8 @@
*
* This is the C++ version of the Standard C Library header @c iso646.h,
* which is empty in C++.
+ *
+ * @since C++11 (removed in C++20)
*/
#ifndef _GLIBCXX_CISO646
#define _GLIBCXX_CISO646
@@ -38,13 +40,15 @@
#include <bits/c++config.h>
-#if __cplusplus >= 202002L && ! _GLIBCXX_USE_DEPRECATED
-# error "<ciso646> is not a standard header in C++20, use <version> to detect implementation-specific macros"
-#elif __cplusplus >= 201703L && defined __DEPRECATED
-# pragma GCC diagnostic push
-# pragma GCC diagnostic ignored "-Wc++23-extensions"
-# warning "<ciso646> is deprecated in C++17, use <version> to detect implementation-specific macros"
-# pragma GCC diagnostic pop
+#if __cplusplus >= 202002L
+# if ! _GLIBCXX_USE_DEPRECATED
+# error "<ciso646> is not a standard header since C++20, use <version> to detect implementation-specific macros"
+# elif defined __DEPRECATED
+# pragma GCC diagnostic push
+# pragma GCC diagnostic ignored "-Wc++23-extensions"
+# warning "<ciso646> is not a standard header since C++20, use <version> to detect implementation-specific macros"
+# pragma GCC diagnostic pop
+# endif
#endif
#endif
diff --git a/libstdc++-v3/include/c_global/cstdalign b/libstdc++-v3/include/c_global/cstdalign
index 92e0ad6..41ce506 100644
--- a/libstdc++-v3/include/c_global/cstdalign
+++ b/libstdc++-v3/include/c_global/cstdalign
@@ -24,6 +24,8 @@
/** @file include/cstdalign
* This is a Standard C++ Library header.
+ *
+ * @since C++11 (removed in C++20)
*/
#ifndef _GLIBCXX_CSTDALIGN
diff --git a/libstdc++-v3/include/c_global/cstdbool b/libstdc++-v3/include/c_global/cstdbool
index e75f56c..5933d7d 100644
--- a/libstdc++-v3/include/c_global/cstdbool
+++ b/libstdc++-v3/include/c_global/cstdbool
@@ -24,6 +24,8 @@
/** @file include/cstdbool
* This is a Standard C++ Library header.
+ *
+ * @since C++11 (removed in C++20)
*/
#ifndef _GLIBCXX_CSTDBOOL
diff --git a/libstdc++-v3/include/c_global/ctgmath b/libstdc++-v3/include/c_global/ctgmath
index 0a5a0e7..b708878 100644
--- a/libstdc++-v3/include/c_global/ctgmath
+++ b/libstdc++-v3/include/c_global/ctgmath
@@ -24,6 +24,8 @@
/** @file include/ctgmath
* This is a Standard C++ Library header.
+ *
+ * @since C++11 (removed in C++20)
*/
#ifndef _GLIBCXX_CTGMATH
diff --git a/libstdc++-v3/include/std/expected b/libstdc++-v3/include/std/expected
index 5dc1dfb..60f1565 100644
--- a/libstdc++-v3/include/std/expected
+++ b/libstdc++-v3/include/std/expected
@@ -1169,13 +1169,13 @@ namespace __expected
return !__y.has_value() && bool(__x.error() == __y.error());
}
- template<typename _Up>
+ template<typename _Up, same_as<_Tp> _Vp>
requires (!__expected::__is_expected<_Up>)
&& requires (const _Tp& __t, const _Up& __u) {
{ __t == __u } -> convertible_to<bool>;
}
friend constexpr bool
- operator==(const expected& __x, const _Up& __v)
+ operator==(const expected<_Vp, _Er>& __x, const _Up& __v)
noexcept(noexcept(bool(*__x == __v)))
{ return __x.has_value() && bool(*__x == __v); }
diff --git a/libstdc++-v3/include/std/mutex b/libstdc++-v3/include/std/mutex
index b3f89c0..e575a81 100644
--- a/libstdc++-v3/include/std/mutex
+++ b/libstdc++-v3/include/std/mutex
@@ -733,7 +733,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
}
}
-#ifdef __cpp_lib_scoped_lock // C++ >= 17 && hosted && gthread
+#ifdef __cpp_lib_scoped_lock // C++ >= 17
/** @brief A scoped lock type for multiple lockable objects.
*
* A scoped_lock controls mutex ownership within a scope, releasing
diff --git a/libstdc++-v3/python/hook.in b/libstdc++-v3/python/hook.in
index d63909d..74a097c 100644
--- a/libstdc++-v3/python/hook.in
+++ b/libstdc++-v3/python/hook.in
@@ -55,10 +55,14 @@ if gdb.current_objfile () is not None:
if not dir_ in sys.path:
sys.path.insert(0, dir_)
- gdb.execute('skip -rfu ^std::(move|forward|as_const|(__)?addressof)')
- gdb.execute('skip -rfu ^std::(shared|unique)_ptr<.*>::(get|operator)')
- gdb.execute('skip -rfu ^std::(basic_string|vector|array|deque|(forward_)?list|(unordered_|flat_)?(multi)?(map|set)|span)<.*>::(c?r?(begin|end)|front|back|data|size|empty)')
- gdb.execute('skip -rfu ^std::(basic_string|vector|array|deque|span)<.*>::operator.]')
+ gdb.execute('skip -rfu ^std::(move|forward|as_const|(__)?addressof)',
+ to_string=True)
+ gdb.execute('skip -rfu ^std::(shared|unique)_ptr<.*>::(get|operator)',
+ to_string=True)
+ gdb.execute('skip -rfu ^std::(basic_string|vector|array|deque|(forward_)?list|(unordered_|flat_)?(multi)?(map|set)|span)<.*>::(c?r?(begin|end)|front|back|data|size|empty)',
+ to_string=True)
+ gdb.execute('skip -rfu ^std::(basic_string|vector|array|deque|span)<.*>::operator.]',
+ to_string=True)
# Call a function as a plain import would not execute body of the included file
# on repeated reloads of this object file.
diff --git a/libstdc++-v3/testsuite/18_support/headers/ciso646/macros-2.cc b/libstdc++-v3/testsuite/18_support/headers/ciso646/macros-2.cc
new file mode 100644
index 0000000..a492924
--- /dev/null
+++ b/libstdc++-v3/testsuite/18_support/headers/ciso646/macros-2.cc
@@ -0,0 +1,7 @@
+// { dg-options " -Wdeprecated -fno-operator-names" }
+// { dg-do preprocess }
+
+// Should get a warning for C++20 and up without -D_GLIBCXX_USE_DEPRECATED=0
+// { dg-warning "not a standard header" "" { target c++20 } 0 }
+
+#include "macros.cc"
diff --git a/libstdc++-v3/testsuite/18_support/headers/ciso646/macros.cc b/libstdc++-v3/testsuite/18_support/headers/ciso646/macros.cc
index ab3a041..0cb5168 100644
--- a/libstdc++-v3/testsuite/18_support/headers/ciso646/macros.cc
+++ b/libstdc++-v3/testsuite/18_support/headers/ciso646/macros.cc
@@ -3,7 +3,6 @@
#include <ciso646>
-// { dg-warning "deprecated" "" { target c++17_only } 0 }
// { dg-error "not a standard header" "" { target c++20 } 0 }
#ifdef and
diff --git a/libstdc++-v3/testsuite/20_util/expected/119714.cc b/libstdc++-v3/testsuite/20_util/expected/119714.cc
new file mode 100644
index 0000000..a8dc6e8
--- /dev/null
+++ b/libstdc++-v3/testsuite/20_util/expected/119714.cc
@@ -0,0 +1,9 @@
+// { dg-do compile { target c++23 } }
+
+// PR libstdc++/119714 - constraint recursion with std::expected::operator==
+
+#include <expected>
+#include <vector>
+
+using I = std::vector<std::expected<int,int>>::iterator;
+static_assert(std::totally_ordered<I>);
diff --git a/libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/typedefs.cc b/libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/typedefs.cc
index 4cd07da..ba52b36 100644
--- a/libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/typedefs.cc
+++ b/libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/typedefs.cc
@@ -1,5 +1,4 @@
// { dg-do compile { target c++17 } }
-// { dg-require-gthreads "" }
// { dg-add-options no_pch }
// Copyright (C) 2017-2025 Free Software Foundation, Inc.
@@ -29,9 +28,30 @@
# error "Feature-test macro for scoped_lock has wrong value"
#endif
+struct BasicLockable
+{
+ BasicLockable() = default;
+ ~BasicLockable() = default;
+ void lock() { }
+ void unlock() { }
+};
+
void test01()
{
- // Check for required typedefs
- typedef std::scoped_lock<std::mutex> test_type;
- typedef test_type::mutex_type mutex_type;
+ // Check for required typedef.
+ using test_type = std::scoped_lock<BasicLockable>;
+ static_assert(std::is_same_v<test_type::mutex_type, BasicLockable>);
+}
+
+template<typename T, typename = void>
+constexpr bool has_mutex_type = false;
+
+template<typename T>
+constexpr bool has_mutex_type<T, std::void_t<typename T::mutex_type>> = true;
+
+void test02()
+{
+ // Check that typedef is absent as required.
+ using test_type = std::scoped_lock<BasicLockable, BasicLockable>;
+ static_assert(!has_mutex_type<test_type>);
}
diff --git a/libstdc++-v3/testsuite/lib/libstdc++.exp b/libstdc++-v3/testsuite/lib/libstdc++.exp
index 5e958d1..fbc9f7f 100644
--- a/libstdc++-v3/testsuite/lib/libstdc++.exp
+++ b/libstdc++-v3/testsuite/lib/libstdc++.exp
@@ -1034,7 +1034,7 @@ proc check_v3_target_namedlocale { args } {
puts $f "using namespace std;"
puts $f "char *transform_locale(const char *name)"
puts $f "{"
- puts $f " char *result = new char\[50\];"
+ puts $f " char *result = new char\[strlen(name)+6\];"
puts $f " strcpy(result, name);"
puts $f "#if defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__"
puts $f " /* fall-through */"
@@ -1045,14 +1045,9 @@ proc check_v3_target_namedlocale { args } {
puts $f "#endif"
puts $f " return result;"
puts $f "}"
- puts $f "int main (int argc, char** argv)"
+ puts $f "int main ()"
puts $f "{"
- puts $f " if (argc < 2)"
- puts $f " {"
- puts $f " printf(\"locale support test not supported\\n\");"
- puts $f " return 1;"
- puts $f " }"
- puts $f " const char *namedloc = transform_locale(*(argv + 1));"
+ puts $f " const char *namedloc = transform_locale(\"$args\");"
puts $f " try"
puts $f " {"
puts $f " locale((const char*)namedloc);"
@@ -1076,7 +1071,7 @@ proc check_v3_target_namedlocale { args } {
return 0
}
- set result [${tool}_load "./$exe" "$args" ""]
+ set result [${tool}_load "./$exe" "" ""]
set status [lindex $result 0]
verbose "check_v3_target_namedlocale <$args>: status is <$status>" 2