<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Fri, Jul 31, 2026 at 3:14 PM Patrick Palka <<a href="mailto:ppalka@redhat.com">ppalka@redhat.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Tested on x86_64-pc-linux-gnu, does this look OK for trunk and<br>
backports?<br>
<br>
-- >8 --<br>
<br>
Note __cpp_lib_char8_t doesn't use the <bits/version.h> mechanism, it's<br>
defined in c++config and thus provided by all headers by default.<br>
<br>
libstdc++-v3/ChangeLog:<br>
<br>
* include/std/iosfwd: Provide feature-test macros<br>
__cpp_lib_spanstream and __cpp_lib_syncbuf.<br>
* testsuite/27_io/headers/iosfwd/synopsis.cc: Verify values<br>
of these FTMs.<br>
---<br>
libstdc++-v3/include/std/iosfwd | 4 ++++<br>
libstdc++-v3/testsuite/27_io/headers/iosfwd/synopsis.cc | 8 ++++++++<br>
2 files changed, 12 insertions(+)<br>
<br>
diff --git a/libstdc++-v3/include/std/iosfwd b/libstdc++-v3/include/std/iosfwd<br>
index 1d5e684b53bb..511b2f3a23f1 100644<br>
--- a/libstdc++-v3/include/std/iosfwd<br>
+++ b/libstdc++-v3/include/std/iosfwd<br>
@@ -39,6 +39,10 @@<br>
<br>
#include <bits/requires_hosted.h> // iostreams<br>
<br>
+#define __glibcxx_want_spanstream<br>
+#define __glibcxx_want_syncbuf<br>
+#include <bits/version.h><br>
+<br>
/**<br>
* @defgroup io I/O<br>
*<br>
diff --git a/libstdc++-v3/testsuite/27_io/headers/iosfwd/synopsis.cc b/libstdc++-v3/testsuite/27_io/headers/iosfwd/synopsis.cc<br>
index 8d9501f42ef4..f39a0b95a3d6 100644<br>
--- a/libstdc++-v3/testsuite/27_io/headers/iosfwd/synopsis.cc<br>
+++ b/libstdc++-v3/testsuite/27_io/headers/iosfwd/synopsis.cc<br>
@@ -3,6 +3,14 @@<br>
<br>
#include <iosfwd><br>
<br>
+#if __cplusplus >= 202202L && __cpp_lib_spanstream != 202106L<br>
+# error "Feature-test macro __cpp_lib_spanstrean has wrong value in <iosfwd>"<br>
+#endif<br></blockquote><div>I would test that __cpp_lib_char8_t is defined when you include this header, even</div><div>if it is for all headers.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
+<br>
+#if __cplusplus >= 202002L && __cpp_lib_syncbuf != 201803L<br>
+# error "Feature-test macro __cpp_lib_syncbuf has wrong value in <iosfwd>"<br>
+#endif<br>
+<br>
namespace std<br>
{<br>
// [iosfwd.syn]<br>
-- <br>
2.55.0.481.ga97fcc37c2<br>
<br>
</blockquote></div></div>