[PATCH] libstdc++: Fix up submdspan std exports

Jakub Jelinek jakub@redhat.com
Tue Feb 17 07:48:35 GMT 2026


On Mon, Feb 16, 2026 at 01:34:50PM +0100, Tomasz Kamiński wrote:
> This patch implements LWG 4491, addressing C++26 NB comments.
> 
> libstdc++-v3/ChangeLog:
> 
> 	* include/std/mdspan (std::submdspan_extents): Rename to...
> 	(std::subextents): Rename of submdspan_extents.
> 	(std::submdspan_canonicalize_slices): Rename to...
> 	(std::canonical_slices):
> 	* testsuite/23_containers/mdspan/submdspan/submdspan_canonicalize_slices.cc:
> 	Move to...
> 	* testsuite/23_containers/mdspan/submdspan/canonical_slices.cc: ...here.
> 	Updated calls to submdspan_canonicalize_slices.
> 	* testsuite/23_containers/mdspan/submdspan/submdspan_canonicalize_slices_neg.cc:
> 	Move to...
> 	* testsuite/23_containers/mdspan/submdspan/canonical_slices_neg.cc: ...here.
> 	Updated calls to submdspan_canonicalize_slices.
> 	* testsuite/23_containers/mdspan/submdspan/submdspan_extents.cc: Move to...
> 	* testsuite/23_containers/mdspan/submdspan/subextents.cc: ...here.
> 	Qualified and renamed calls to submdspan_extents.
> 	* testsuite/23_containers/mdspan/submdspan/submdspan_extents_neg.cc: Move to...
> 	* testsuite/23_containers/mdspan/submdspan/subextents_neg.cc: ...here.
> 	Qualified and renamed calls to submdspan_extents.

This broke
+FAIL: g++.dg/modules/compile-std1.C -std=c++26 (test for excess errors)
+FAIL: g++.dg/modules/compile-std1.C module-cmi std (gcm.cache/std.gcm)
+FAIL: g++.dg/modules/compile-std1.C module-cmi std.compat (gcm.cache/std.compat.gcm)
on all targets.

The following patch fixes it, tested on x86_64-linux, ok for trunk?

2026-02-17  Jakub Jelinek  <jakub@redhat.com>

	* src/c++23/std.cc.in (std::submdspan_canonicalize_slices,
	std::submdspan_extents): Remove exports.
	(std::canonical_slices, std::subextents): New exports.

--- libstdc++-v3/src/c++23/std.cc.in.jj	2026-01-29 21:56:30.963463807 +0100
+++ libstdc++-v3/src/c++23/std.cc.in	2026-02-17 08:40:55.256669866 +0100
@@ -1915,8 +1915,8 @@ export namespace std
   using std::full_extent_t;
   using std::full_extent;
   using std::submdspan_mapping_result;
-  using std::submdspan_canonicalize_slices;
-  using std::submdspan_extents;
+  using std::canonical_slices;
+  using std::subextents;
   using std::submdspan;
 #endif
 }


	Jakub



More information about the Libstdc++ mailing list