]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
libstdc++: Document remaining C++20 implementation-defined behavior.
authorTomasz Kamiński <tkaminsk@redhat.com>
Mon, 8 Sep 2025 11:33:57 +0000 (13:33 +0200)
committerTomasz Kamiński <tkaminsk@redhat.com>
Wed, 10 Sep 2025 07:43:43 +0000 (09:43 +0200)
I have double checked that implementation-defined behavior in the [compliance]
(whether the implementation is freestanding) and [stringbuf.const] (initialization
of sequence pointers) are indeed null, and there are no corresponding entires in
earlier standards.

libstdc++-v3/ChangeLog:

* doc/html/manual/status.html: Regenerate.
* doc/xml/manual/status_cxx2020.xml: Add more entires.

Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
Signed-off-by: Tomasz Kamiński <tkaminsk@redhat.com>
libstdc++-v3/doc/html/manual/status.html
libstdc++-v3/doc/xml/manual/status_cxx2020.xml

index 208025edaa350baf4277ba0c95838c6e51c6bd62..164faebbf371167575fe36464ae4d5f49c88a885 100644 (file)
@@ -1766,12 +1766,27 @@ and <code class="function">chrono::parse</code> is supported since 14.1.
       <a class="link" href="status.html#iso.2017.specific" title="Implementation Specific Behavior">C++ 2017 Implementation Specific
       Behavior</a>. This section only documents behaviour which is new in
       the 2020 standard.
+   </p><p>
+      <span class="emphasis"><em>16.4.2.4 [compliance]</em></span> The implementation is
+      freestanding if the <code class="code">-ffreestanding</code> compiler flag is used, 
+      and hosted otherwise.
    </p><p>
       <span class="emphasis"><em>16.4.2.4 [compliance]</em></span>
       The support for always lock-free integral atomic types and presence of
       <code class="code">atomic_signed_lock_free</code> and
       <code class="code">atomic_unsigned_lock_free</code> type aliases depends on the
       target.
+   </p><p>
+      <span class="emphasis"><em>27.5.11 [time.duration.io]</em></span>
+      The <code class="literal">"μs"</code> (<code class="literal">"\u00b5\u0073"</code>) is used
+      for <code class="code">std::micro</code> <code class="code">Period::type</code> if the macro
+      <code class="code">_GLIBCXX_USE_ALT_MICROSECONDS_SUFFIX</code> is defined to a value
+      other than zero before inclusion of the <code class="code">chrono</code> header,
+      <code class="literal">"us"</code> is used otherwise.
+   </p><p>
+      <span class="emphasis"><em>29.8.2.2 [stringbuf.cons]</em></span> Sequence pointers are
+      initialized to null pointers by the
+      <code class="code">basic_stringbuf(ios_base::openmode)</code> constructor.
    </p><p>
       <span class="emphasis"><em>31.7.1 [atomics.ref.generic.general]</em></span>,
       <span class="emphasis"><em>31.7.3 [atomics.ref.int]</em></span>,
@@ -1796,6 +1811,12 @@ and <code class="function">chrono::parse</code> is supported since 14.1.
       <span class="emphasis"><em>31.7.5 [atomics.ref.pointer]</em></span>
       The value of <code class="code">required_alignment</code> member is equal to
       <code class="code">alignof(value_type)</code>.
+   </p><p>
+      <span class="emphasis"><em>32.7.3 [thread.sema.cnt]</em></span> The value of default
+      argument for the <code class="code">least_max_value</code> parameter depends on the
+      target operating system and platform, however the value of
+      <code class="code">counting_semaphore&lt;&gt;::max()</code> is greater than or equal
+      to <code class="code">numeric_limits&lt;int&gt;::max()</code>.
    </p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.2023"></a>C++ 2023</h3></div></div></div><p>
 In this implementation the <code class="literal">-std=gnu++23</code> or
 <code class="literal">-std=c++23</code> flag must be used to enable language
index dca4caac91ef3843098a0ea58ce50e4db30a172c..9cee44fd438c279097578042f684f57c6a5cb71b 100644 (file)
@@ -1464,6 +1464,12 @@ and <function>chrono::parse</function> is supported since 14.1.
       the 2020 standard.
    </para>
 
+   <para>
+      <emphasis>16.4.2.4 [compliance]</emphasis> The implementation is
+      freestanding if the <code>-ffreestanding</code> compiler flag is used, 
+      and hosted otherwise.
+   </para>
+
    <para>
       <emphasis>16.4.2.4 [compliance]</emphasis>
       The support for always lock-free integral atomic types and presence of
@@ -1472,6 +1478,21 @@ and <function>chrono::parse</function> is supported since 14.1.
       target.
    </para>
 
+   <para>
+      <emphasis>27.5.11 [time.duration.io]</emphasis>
+      The <literal>"μs"</literal> (<literal>"\u00b5\u0073"</literal>) is used
+      for <code>std::micro</code> <code>Period::type</code> if the macro
+      <code>_GLIBCXX_USE_ALT_MICROSECONDS_SUFFIX</code> is defined to a value
+      other than zero before inclusion of the <code>chrono</code> header,
+      <literal>"us"</literal> is used otherwise.
+   </para>
+
+   <para>
+      <emphasis>29.8.2.2 [stringbuf.cons]</emphasis> Sequence pointers are
+      initialized to null pointers by the
+      <code>basic_stringbuf(ios_base::openmode)</code> constructor.
+   </para>
+
    <para>
       <emphasis>31.7.1 [atomics.ref.generic.general]</emphasis>,
       <emphasis>31.7.3 [atomics.ref.int]</emphasis>,
@@ -1504,6 +1525,14 @@ and <function>chrono::parse</function> is supported since 14.1.
       <code>alignof(value_type)</code>.
    </para>
 
+   <para>
+      <emphasis>32.7.3 [thread.sema.cnt]</emphasis> The value of default
+      argument for the <code>least_max_value</code> parameter depends on the
+      target operating system and platform, however the value of
+      <code>counting_semaphore&lt;&gt;::max()</code> is greater than or equal
+      to <code>numeric_limits&lt;int&gt;::max()</code>.
+   </para>
+
 </section>
 
 </section>