Skip to content

Commit

Permalink
Update span.cc
Browse files Browse the repository at this point in the history
  • Loading branch information
lackhole authored Sep 29, 2024
1 parent bbe4167 commit cfda24c
Showing 1 changed file with 95 additions and 0 deletions.
95 changes: 95 additions & 0 deletions test/span.cc
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
#include <vector>

#include "preview/algorithm.h"
#include "preview/array.h"
#include "preview/ranges.h"

namespace ranges = preview::ranges;
Expand Down Expand Up @@ -114,3 +115,97 @@ TEST(VERSIONED(Span), deduction_guides) {
}

#endif // C++17

#if PREVIEW_CXX_VERSION >= 20

#include <span>

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<int>, preview::span<int>> ==
std::is_convertible_v<preview::span<int>, std::span<int>>, "");
static_assert(std::is_convertible_v<preview::span<unsigned int>, preview::span<int>> ==
std::is_convertible_v<preview::span<unsigned int>, std::span<int>>, "");
static_assert(std::is_convertible_v<preview::span<int>, preview::span<unsigned int>> ==
std::is_convertible_v<preview::span<int>, std::span<unsigned int>>, "");

static_assert(std::is_convertible_v<preview::span<int, 5>, preview::span<int>> ==
std::is_convertible_v<preview::span<int, 5>, std::span<int>>, "");
static_assert(std::is_convertible_v<preview::span<unsigned int, 5>, preview::span<int>> ==
std::is_convertible_v<preview::span<unsigned int, 5>, std::span<int>>, "");
static_assert(std::is_convertible_v<preview::span<int, 5>, preview::span<unsigned int>> ==
std::is_convertible_v<preview::span<int, 5>, std::span<unsigned int>>, "");

static_assert(std::is_convertible_v<preview::span<int>, preview::span<int, 5>> ==
std::is_convertible_v<preview::span<int>, std::span<int, 5>>, "");
static_assert(std::is_convertible_v<preview::span<unsigned int>, preview::span<int, 5>> ==
std::is_convertible_v<preview::span<unsigned int>, std::span<int, 5>>, "");
static_assert(std::is_convertible_v<preview::span<int>, preview::span<unsigned int, 5>> ==
std::is_convertible_v<preview::span<int>, std::span<unsigned int, 5>>, "");

static_assert(std::is_convertible_v<preview::span<int, 5>, preview::span<int, 5>> ==
std::is_convertible_v<preview::span<int, 5>, std::span<int, 5>>, "");
static_assert(std::is_convertible_v<preview::span<unsigned int, 5>, preview::span<int, 5>> ==
std::is_convertible_v<preview::span<unsigned int, 5>, std::span<int, 5>>, "");
static_assert(std::is_convertible_v<preview::span<int, 5>, preview::span<unsigned int, 5>> ==
std::is_convertible_v<preview::span<int, 5>, std::span<unsigned int, 5>>, "");

static_assert(preview::is_explicitly_convertible_v<preview::span<int>, preview::span<int>> ==
preview::is_explicitly_convertible_v<preview::span<int>, std::span<int>>, "");
static_assert(preview::is_explicitly_convertible_v<preview::span<unsigned int>, preview::span<int>> ==
preview::is_explicitly_convertible_v<preview::span<unsigned int>, std::span<int>>, "");
static_assert(preview::is_explicitly_convertible_v<preview::span<int>, preview::span<unsigned int>> ==
preview::is_explicitly_convertible_v<preview::span<int>, std::span<unsigned int>>, "");

static_assert(preview::is_explicitly_convertible_v<preview::span<int, 5>, preview::span<int>> ==
preview::is_explicitly_convertible_v<preview::span<int, 5>, std::span<int>>, "");
static_assert(preview::is_explicitly_convertible_v<preview::span<unsigned int, 5>, preview::span<int>> ==
preview::is_explicitly_convertible_v<preview::span<unsigned int, 5>, std::span<int>>, "");
static_assert(preview::is_explicitly_convertible_v<preview::span<int, 5>, preview::span<unsigned int>> ==
preview::is_explicitly_convertible_v<preview::span<int, 5>, std::span<unsigned int>>, "");

static_assert(preview::is_explicitly_convertible_v<preview::span<int>, preview::span<int, 5>> ==
preview::is_explicitly_convertible_v<preview::span<int>, std::span<int, 5>>, "");
static_assert(preview::is_explicitly_convertible_v<preview::span<unsigned int>, preview::span<int, 5>> ==
preview::is_explicitly_convertible_v<preview::span<unsigned int>, std::span<int, 5>>, "");
static_assert(preview::is_explicitly_convertible_v<preview::span<int>, preview::span<unsigned int, 5>> ==
preview::is_explicitly_convertible_v<preview::span<int>, std::span<unsigned int, 5>>, "");

static_assert(preview::is_explicitly_convertible_v<preview::span<int, 5>, preview::span<int, 5>> ==
preview::is_explicitly_convertible_v<preview::span<int, 5>, std::span<int, 5>>, "");
static_assert(preview::is_explicitly_convertible_v<preview::span<unsigned int, 5>, preview::span<int, 5>> ==
preview::is_explicitly_convertible_v<preview::span<unsigned int, 5>, std::span<int, 5>>, "");
static_assert(preview::is_explicitly_convertible_v<preview::span<int, 5>, preview::span<unsigned int, 5>> ==
preview::is_explicitly_convertible_v<preview::span<int, 5>, std::span<unsigned int, 5>>, "");

static_assert(std::is_constructible_v<preview::span<int>, preview::span<int>> ==
std::is_constructible_v< std::span<int>, preview::span<int>>, "");
static_assert(std::is_constructible_v<preview::span<unsigned int>, preview::span<int>> ==
std::is_constructible_v< std::span<unsigned int>, preview::span<int>>, "");
static_assert(std::is_constructible_v<preview::span<int>, preview::span<unsigned int>> ==
std::is_constructible_v< std::span<int>, preview::span<unsigned int>>, "");

static_assert(std::is_constructible_v<preview::span<int, 5>, preview::span<int>> ==
std::is_constructible_v< std::span<int, 5>, preview::span<int>>, "");
static_assert(std::is_constructible_v<preview::span<unsigned int, 5>, preview::span<int>> ==
std::is_constructible_v< std::span<unsigned int, 5>, preview::span<int>>, "");
static_assert(std::is_constructible_v<preview::span<int, 5>, preview::span<unsigned int>> ==
std::is_constructible_v< std::span<int, 5>, preview::span<unsigned int>>, "");

static_assert(std::is_constructible_v<preview::span<int>, preview::span<int, 5>> ==
std::is_constructible_v< std::span<int>, preview::span<int, 5>>, "");
static_assert(std::is_constructible_v<preview::span<unsigned int>, preview::span<int, 5>> ==
std::is_constructible_v< std::span<unsigned int>, preview::span<int, 5>>, "");
static_assert(std::is_constructible_v<preview::span<int>, preview::span<unsigned int, 5>> ==
std::is_constructible_v< std::span<int>, preview::span<unsigned int, 5>>, "");

static_assert(std::is_constructible_v<preview::span<int, 5>, preview::span<int, 5>> ==
std::is_constructible_v< std::span<int, 5>, preview::span<int, 5>>, "");
static_assert(std::is_constructible_v<preview::span<unsigned int, 5>, preview::span<int, 5>> ==
std::is_constructible_v< std::span<unsigned int, 5>, preview::span<int, 5>>, "");
static_assert(std::is_constructible_v<preview::span<int, 5>, preview::span<unsigned int, 5>> ==
std::is_constructible_v< std::span<int, 5>, preview::span<unsigned int, 5>>, "");
}

#endif // C++17

0 comments on commit cfda24c

Please sign in to comment.