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