[gcc r15-10300] libstdc++: Document missing implementation defined behavior for std::filesystem.
Tomasz Kaminski
tkaminsk@gcc.gnu.org
Tue Sep 9 14:17:28 GMT 2025
https://gcc.gnu.org/g:23109eeb4b815edb8685faf74ed9295307a36bfe
commit r15-10300-g23109eeb4b815edb8685faf74ed9295307a36bfe
Author: Tomasz Kamiński <tkaminsk@redhat.com>
Date: Fri Sep 5 13:16:40 2025 +0200
libstdc++: Document missing implementation defined behavior for std::filesystem.
libstdc++-v3/ChangeLog:
* doc/html/manual/status.html: Regenerate the file.
* doc/xml/manual/status_cxx2017.xml: Addd more entires.
Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
Signed-off-by: Tomasz Kamiński <tkaminsk@redhat.com>
(cherry picked from commit d6c370b8e96d43448537276d91c2b33fedb9754a)
Diff:
---
libstdc++-v3/doc/html/manual/status.html | 18 ++++++++++++++++--
libstdc++-v3/doc/xml/manual/status_cxx2017.xml | 23 ++++++++++++++++++++---
2 files changed, 36 insertions(+), 5 deletions(-)
diff --git a/libstdc++-v3/doc/html/manual/status.html b/libstdc++-v3/doc/html/manual/status.html
index 81a41c6c96b7..93b6ad967990 100644
--- a/libstdc++-v3/doc/html/manual/status.html
+++ b/libstdc++-v3/doc/html/manual/status.html
@@ -1118,7 +1118,8 @@ since C++14 and the implementation is complete.
The effect of calling the mathematical special functions with large
inputs should be documented here.
</p><p>
- <span class="emphasis"><em>30.10.2.1 [fs.conform.9945]</em></span>
+ <span class="emphasis"><em>30.10.2.1 [fs.conform.9945]</em></span>,
+ <span class="emphasis"><em>30.10.2.2 [fs.conform.os]</em></span>
The behavior of the filesystem library implementation will depend on
the target operating system. Some features will not be supported
on some targets. Symbolic links and file permissions
@@ -1154,7 +1155,20 @@ since C++14 and the implementation is complete.
Specifically, it is not possible to rename a directory to replace another
directory (POSIX requires that to work if the directory being
replaced is empty).
- </p><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="iso.2017.par2ts"></a>Parallelism 2 TS</h5></div></div></div><p>
+ </p><p>
+ <span class="emphasis"><em>30.10.29.2 [fs.enum.file_type]</em></span>,
+ <span class="emphasis"><em>30.10.34.3 [fs.op.copy]</em></span>,
+ <span class="emphasis"><em>30.10.34.35 [fs.op.status]</em></span>
+ No additional file types are supported, and there are no
+ implementation-defined enumerators in
+ <code class="code">std::filesystem::file_type</code>.
+ </p><p>
+ <span class="emphasis"><em>30.10.32 [fs.class.directory_iterator]</em></span>,
+ <span class="emphasis"><em>30.10.33 [fs.class.rec.dir.itr]</em></span>
+ Any directory-like file types supported by
+ <code class="code">opendir</code>/<code class="code">readdir</code>
+ (or <code class="code">_wopendir</code>/<code class="code">_wreaddir</code> on Windows).
+ </p><div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="iso.2017.par2ts"></a>Parallelism 2 TS</h5></div></div></div><p>
<span class="emphasis"><em>9.3 [parallel.simd.abi]</em></span>
<code class="code">max_fixed_size<T></code> is 32, except when targetting
AVX512BW and <code class="code">sizeof(T)</code> is 1.
diff --git a/libstdc++-v3/doc/xml/manual/status_cxx2017.xml b/libstdc++-v3/doc/xml/manual/status_cxx2017.xml
index 70a3154a8c35..1275d5656988 100644
--- a/libstdc++-v3/doc/xml/manual/status_cxx2017.xml
+++ b/libstdc++-v3/doc/xml/manual/status_cxx2017.xml
@@ -3003,7 +3003,8 @@ since C++14 and the implementation is complete.
</para>
<para>
- <emphasis>30.10.2.1 [fs.conform.9945]</emphasis>
+ <emphasis>30.10.2.1 [fs.conform.9945]</emphasis>,
+ <emphasis>30.10.2.2 [fs.conform.os]</emphasis>
The behavior of the filesystem library implementation will depend on
the target operating system. Some features will not be supported
on some targets. Symbolic links and file permissions
@@ -3040,7 +3041,7 @@ since C++14 and the implementation is complete.
If <code>!is_regular_file(p)</code>, an error is reported.
</para>
- <para>
+ <para>
<emphasis>30.10.15.32 [fs.op.rename]</emphasis>
On Windows, <code>filesystem::rename</code>
is implemented by calling <code>MoveFileExW</code> and so
@@ -3049,8 +3050,24 @@ since C++14 and the implementation is complete.
Specifically, it is not possible to rename a directory to replace another
directory (POSIX requires that to work if the directory being
replaced is empty).
- </para>
+ </para>
+ <para>
+ <emphasis>30.10.29.2 [fs.enum.file_type]</emphasis>,
+ <emphasis>30.10.34.3 [fs.op.copy]</emphasis>,
+ <emphasis>30.10.34.35 [fs.op.status]</emphasis>
+ No additional file types are supported, and there are no
+ implementation-defined enumerators in
+ <code>std::filesystem::file_type</code>.
+ </para>
+
+ <para>
+ <emphasis>30.10.32 [fs.class.directory_iterator]</emphasis>,
+ <emphasis>30.10.33 [fs.class.rec.dir.itr]</emphasis>
+ Any directory-like file types supported by
+ <code>opendir</code>/<code>readdir</code>
+ (or <code>_wopendir</code>/<code>_wreaddir</code> on Windows).
+ </para>
<section xml:id="iso.2017.par2ts" xreflabel="Implementation Specific Behavior of the Parallelism 2 TS"><info><title>Parallelism 2 TS</title></info>
More information about the Libstdc++-cvs
mailing list