mirror of
https://github.com/ETLCPP/etl.git
synced 2026-04-30 19:09:10 +08:00
#691 etl::span copy constructor doesn't compile when types are not the same
This commit is contained in:
parent
f4b8fd73c6
commit
1c333bbe07
@ -222,7 +222,7 @@ namespace etl
|
||||
//*************************************************************************
|
||||
template <typename U, size_t N>
|
||||
ETL_CONSTEXPR span(const etl::span<U, N>& other, typename etl::enable_if<(Extent == etl::dynamic_extent) || (N == etl::dynamic_extent) || (N == Extent), void>::type) ETL_NOEXCEPT
|
||||
: pbegin(other.pbegin)
|
||||
: pbegin(other.data())
|
||||
{
|
||||
}
|
||||
|
||||
@ -625,8 +625,8 @@ namespace etl
|
||||
//*************************************************************************
|
||||
template <typename U, size_t N>
|
||||
ETL_CONSTEXPR span(const etl::span<U, N>& other) ETL_NOEXCEPT
|
||||
: pbegin(other.pbegin)
|
||||
, pend(other.pend)
|
||||
: pbegin(other.data())
|
||||
, pend(other.data() + other.size())
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@ -305,6 +305,36 @@ namespace
|
||||
CHECK(isEqual);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST(test_copy_constructor_from_same_span_type)
|
||||
{
|
||||
etl::array<char, 10> data = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
|
||||
|
||||
const etl::span<char> view1(data.data(), data.data() + data.size());
|
||||
etl::span<char> view2(view1);
|
||||
|
||||
CHECK_EQUAL(data.size(), view1.size());
|
||||
CHECK_EQUAL(data.size(), view2.size());
|
||||
|
||||
bool isEqual = std::equal(view1.begin(), view1.end(), view2.begin());
|
||||
CHECK(isEqual);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST(test_copy_constructor_from_different_span_type)
|
||||
{
|
||||
etl::array<char, 10> data = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
|
||||
|
||||
const etl::span<char> view1(data.data(), data.data() + data.size());
|
||||
etl::span<const char> view2(view1);
|
||||
|
||||
CHECK_EQUAL(data.size(), view1.size());
|
||||
CHECK_EQUAL(data.size(), view2.size());
|
||||
|
||||
bool isEqual = std::equal(view1.begin(), view1.end(), view2.begin());
|
||||
CHECK(isEqual);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST(test_assign_from_span)
|
||||
{
|
||||
|
||||
@ -305,6 +305,36 @@ namespace
|
||||
CHECK(isEqual);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST(test_copy_constructor_from_same_span_type)
|
||||
{
|
||||
etl::array<char, 10> data = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
|
||||
|
||||
const etl::span<char, 10> view1(data.data(), data.data() + data.size());
|
||||
etl::span<char, 10> view2(view1);
|
||||
|
||||
CHECK_EQUAL(data.size(), view1.size());
|
||||
CHECK_EQUAL(data.size(), view2.size());
|
||||
|
||||
bool isEqual = std::equal(view1.begin(), view1.end(), view2.begin());
|
||||
CHECK(isEqual);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST(test_copy_constructor_from_different_span_type)
|
||||
{
|
||||
etl::array<char, 10> data = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
|
||||
|
||||
const etl::span<char, 10> view1(data.data(), data.data() + data.size());
|
||||
etl::span<const char, 10> view2(view1);
|
||||
|
||||
CHECK_EQUAL(data.size(), view1.size());
|
||||
CHECK_EQUAL(data.size(), view2.size());
|
||||
|
||||
bool isEqual = std::equal(view1.begin(), view1.end(), view2.begin());
|
||||
CHECK(isEqual);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST(test_assign_from_span)
|
||||
{
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user