From cfda24cd81bcafc1c3ae0f7ea2eac5796f3fe9e8 Mon Sep 17 00:00:00 2001 From: Yong Gyu Lee Date: Sun, 29 Sep 2024 13:57:15 +0900 Subject: [PATCH] Update span.cc --- test/span.cc | 95 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) diff --git a/test/span.cc b/test/span.cc index 4d168b80..a087d1be 100644 --- a/test/span.cc +++ b/test/span.cc @@ -6,6 +6,7 @@ #include #include "preview/algorithm.h" +#include "preview/array.h" #include "preview/ranges.h" namespace ranges = preview::ranges; @@ -114,3 +115,97 @@ TEST(VERSIONED(Span), deduction_guides) { } #endif // C++17 + +#if PREVIEW_CXX_VERSION >= 20 + +#include + +TEST(VERSIONED(Span), std_span_compat) { + const auto arr = preview::to_array({1, 2, 3, 4, 5}); + + static_assert(std::is_convertible_v, preview::span> == + std::is_convertible_v, std::span>, ""); + static_assert(std::is_convertible_v, preview::span> == + std::is_convertible_v, std::span>, ""); + static_assert(std::is_convertible_v, preview::span> == + std::is_convertible_v, std::span>, ""); + + static_assert(std::is_convertible_v, preview::span> == + std::is_convertible_v, std::span>, ""); + static_assert(std::is_convertible_v, preview::span> == + std::is_convertible_v, std::span>, ""); + static_assert(std::is_convertible_v, preview::span> == + std::is_convertible_v, std::span>, ""); + + static_assert(std::is_convertible_v, preview::span> == + std::is_convertible_v, std::span>, ""); + static_assert(std::is_convertible_v, preview::span> == + std::is_convertible_v, std::span>, ""); + static_assert(std::is_convertible_v, preview::span> == + std::is_convertible_v, std::span>, ""); + + static_assert(std::is_convertible_v, preview::span> == + std::is_convertible_v, std::span>, ""); + static_assert(std::is_convertible_v, preview::span> == + std::is_convertible_v, std::span>, ""); + static_assert(std::is_convertible_v, preview::span> == + std::is_convertible_v, std::span>, ""); + + static_assert(preview::is_explicitly_convertible_v, preview::span> == + preview::is_explicitly_convertible_v, std::span>, ""); + static_assert(preview::is_explicitly_convertible_v, preview::span> == + preview::is_explicitly_convertible_v, std::span>, ""); + static_assert(preview::is_explicitly_convertible_v, preview::span> == + preview::is_explicitly_convertible_v, std::span>, ""); + + static_assert(preview::is_explicitly_convertible_v, preview::span> == + preview::is_explicitly_convertible_v, std::span>, ""); + static_assert(preview::is_explicitly_convertible_v, preview::span> == + preview::is_explicitly_convertible_v, std::span>, ""); + static_assert(preview::is_explicitly_convertible_v, preview::span> == + preview::is_explicitly_convertible_v, std::span>, ""); + + static_assert(preview::is_explicitly_convertible_v, preview::span> == + preview::is_explicitly_convertible_v, std::span>, ""); + static_assert(preview::is_explicitly_convertible_v, preview::span> == + preview::is_explicitly_convertible_v, std::span>, ""); + static_assert(preview::is_explicitly_convertible_v, preview::span> == + preview::is_explicitly_convertible_v, std::span>, ""); + + static_assert(preview::is_explicitly_convertible_v, preview::span> == + preview::is_explicitly_convertible_v, std::span>, ""); + static_assert(preview::is_explicitly_convertible_v, preview::span> == + preview::is_explicitly_convertible_v, std::span>, ""); + static_assert(preview::is_explicitly_convertible_v, preview::span> == + preview::is_explicitly_convertible_v, std::span>, ""); + + static_assert(std::is_constructible_v, preview::span> == + std::is_constructible_v< std::span, preview::span>, ""); + static_assert(std::is_constructible_v, preview::span> == + std::is_constructible_v< std::span, preview::span>, ""); + static_assert(std::is_constructible_v, preview::span> == + std::is_constructible_v< std::span, preview::span>, ""); + + static_assert(std::is_constructible_v, preview::span> == + std::is_constructible_v< std::span, preview::span>, ""); + static_assert(std::is_constructible_v, preview::span> == + std::is_constructible_v< std::span, preview::span>, ""); + static_assert(std::is_constructible_v, preview::span> == + std::is_constructible_v< std::span, preview::span>, ""); + + static_assert(std::is_constructible_v, preview::span> == + std::is_constructible_v< std::span, preview::span>, ""); + static_assert(std::is_constructible_v, preview::span> == + std::is_constructible_v< std::span, preview::span>, ""); + static_assert(std::is_constructible_v, preview::span> == + std::is_constructible_v< std::span, preview::span>, ""); + + static_assert(std::is_constructible_v, preview::span> == + std::is_constructible_v< std::span, preview::span>, ""); + static_assert(std::is_constructible_v, preview::span> == + std::is_constructible_v< std::span, preview::span>, ""); + static_assert(std::is_constructible_v, preview::span> == + std::is_constructible_v< std::span, preview::span>, ""); +} + +#endif // C++17