[PATCH] libstdc++: Make mdspan::is_exhaustive() const

Jonathan Wakely jwakely@redhat.com
Sun May 17 19:27:41 GMT 2026


This is specified as const in the standard.

libstdc++-v3/ChangeLog:

	* include/std/mdspan (mdspan::is_exhaustive): Add const keyword.
	* testsuite/23_containers/mdspan/mdspan.cc: Check that
	is_unique, is_exhaustive, and is_strided can be called on a
	const object.
---

Tested x86_64-linux.

 libstdc++-v3/include/std/mdspan                       | 2 +-
 libstdc++-v3/testsuite/23_containers/mdspan/mdspan.cc | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/include/std/mdspan b/libstdc++-v3/include/std/mdspan
index 5938bf09a940..27d15df12944 100644
--- a/libstdc++-v3/include/std/mdspan
+++ b/libstdc++-v3/include/std/mdspan
@@ -2621,7 +2621,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	{ return _PaddedStorage::_M_is_always_exhaustive(); }
 
 	constexpr bool
-	is_exhaustive() noexcept
+	is_exhaustive() const noexcept
 	{ return _M_storage._M_is_exhaustive(); }
 
 	static constexpr bool
diff --git a/libstdc++-v3/testsuite/23_containers/mdspan/mdspan.cc b/libstdc++-v3/testsuite/23_containers/mdspan/mdspan.cc
index 62ff7201cce9..99205142579a 100644
--- a/libstdc++-v3/testsuite/23_containers/mdspan/mdspan.cc
+++ b/libstdc++-v3/testsuite/23_containers/mdspan/mdspan.cc
@@ -715,7 +715,7 @@ template<typename Layout, bool Expected>
   test_nothrow_is_methods()
   {
     using Extents = std::extents<int, dyn>;
-    using MDSpan = std::mdspan<double, Extents, Layout>;
+    using MDSpan = const std::mdspan<double, Extents, Layout>;
     static_assert(noexcept(MDSpan::is_always_unique()) == Expected);
     static_assert(noexcept(MDSpan::is_always_exhaustive()) == Expected);
     static_assert(noexcept(MDSpan::is_always_strided()) == Expected);
-- 
2.54.0



More information about the Libstdc++ mailing list