Support proper util::span move & copy assignment
This commit is contained in:
parent
b9ea07f0f4
commit
e831eb8567
1 changed files with 24 additions and 1 deletions
|
|
@ -24,7 +24,12 @@ namespace psemek::util
|
||||||
|
|
||||||
span() = default;
|
span() = default;
|
||||||
span(span const &) = default;
|
span(span const &) = default;
|
||||||
span(span &&) = default;
|
span(span && other)
|
||||||
|
: p_begin{other.p_begin}
|
||||||
|
, p_end{other.p_end}
|
||||||
|
{
|
||||||
|
other.reset();
|
||||||
|
}
|
||||||
|
|
||||||
span(T * begin, T * end)
|
span(T * begin, T * end)
|
||||||
: p_begin{begin}
|
: p_begin{begin}
|
||||||
|
|
@ -43,6 +48,18 @@ namespace psemek::util
|
||||||
, p_end{a.data() + N}
|
, p_end{a.data() + N}
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
span & operator =(span const &) = default;
|
||||||
|
span & operator =(span && other)
|
||||||
|
{
|
||||||
|
if (this == &other)
|
||||||
|
return *this;
|
||||||
|
|
||||||
|
p_begin = other.p_begin;
|
||||||
|
p_end = other.p_end;
|
||||||
|
other.reset();
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
T * data() const { return p_begin; }
|
T * data() const { return p_begin; }
|
||||||
|
|
||||||
T * begin() const { return p_begin; }
|
T * begin() const { return p_begin; }
|
||||||
|
|
@ -53,6 +70,12 @@ namespace psemek::util
|
||||||
reverse_iterator rbegin() const { return reverse_iterator(p_end); }
|
reverse_iterator rbegin() const { return reverse_iterator(p_end); }
|
||||||
reverse_iterator rend() const { return reverse_iterator(p_begin); }
|
reverse_iterator rend() const { return reverse_iterator(p_begin); }
|
||||||
|
|
||||||
|
void reset()
|
||||||
|
{
|
||||||
|
p_begin = nullptr;
|
||||||
|
p_end = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
T & operator[] (size_type i) const { return p_begin[i]; }
|
T & operator[] (size_type i) const { return p_begin[i]; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue