The layout mapping test include a check that applies if is_exhaustive is
static. This commit introduces a concept to check if is_exhaustive is a
static member function that's compatible with the upcoming
layout_left_padded.
libstdc++-v3/ChangeLog:
* testsuite/23_containers/mdspan/layouts/mapping.cc
(has_static_is_exhaustive): New concept.
(test_mapping_properties): Update test.
Signed-off-by: Luc Grosheintz <[email protected]>
---
.../testsuite/23_containers/mdspan/layouts/mapping.cc | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/libstdc++-v3/testsuite/23_containers/mdspan/layouts/mapping.cc
b/libstdc++-v3/testsuite/23_containers/mdspan/layouts/mapping.cc
index 58bce514435..ee902a3cc05 100644
--- a/libstdc++-v3/testsuite/23_containers/mdspan/layouts/mapping.cc
+++ b/libstdc++-v3/testsuite/23_containers/mdspan/layouts/mapping.cc
@@ -7,6 +7,15 @@
constexpr size_t dyn = std::dynamic_extent;
+template<typename Mapping>
+ concept has_static_is_exhaustive = requires
+ {
+ { Mapping::is_exhaustive() } -> std::same_as<bool>;
+ };
+
+static_assert(has_static_is_exhaustive<std::layout_right::mapping<std::extents<int>>>);
+static_assert(!has_static_is_exhaustive<std::layout_stride::mapping<std::extents<int>>>);
+
template<typename Layout, typename Extents>
constexpr bool
test_mapping_properties()
@@ -32,7 +41,7 @@ template<typename Layout, typename Extents>
static_assert(M::is_always_unique() && M::is_unique());
static_assert(M::is_always_strided() && M::is_strided());
- if constexpr (!std::is_same_v<Layout, std::layout_stride>)
+ if constexpr (has_static_is_exhaustive<M>)
static_assert(M::is_always_exhaustive() && M::is_exhaustive());
return true;
}
--
2.50.1