view: use trivial constructors and assignment
this allows us to fulfil the requirements of TriviallyCopyable which is useful particularly in dumb allocators and job queues.
This commit is contained in:
parent
36f4ba035c
commit
58843fb0c7
41
view.hpp
41
view.hpp
@ -155,20 +155,11 @@ namespace util {
|
||||
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
constexpr
|
||||
view (const view &rhs) noexcept:
|
||||
view {rhs.m_begin, rhs.m_end}
|
||||
{ ; }
|
||||
constexpr view (const view &) noexcept = default;
|
||||
constexpr view (view &&) noexcept = default;
|
||||
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// technically we could get away without explicitly defining a move
|
||||
// constructor here, but by nulling rhs we can more easily use this
|
||||
// class as a base for unique owning pointers without exposing the
|
||||
// begin/end data members to them directly.
|
||||
constexpr view (view &&rhs) noexcept:
|
||||
view {std::move (rhs.m_begin), std::move (rhs.m_end)}
|
||||
{ ; }
|
||||
view& operator= (const view &rhs) noexcept = default;
|
||||
view& operator= (view &&rhs) noexcept = default;
|
||||
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
@ -225,30 +216,6 @@ namespace util {
|
||||
{ ; }
|
||||
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
view&
|
||||
operator= (const view &rhs) noexcept
|
||||
{
|
||||
m_begin = rhs.m_begin;
|
||||
m_end = rhs.m_end;
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
view&
|
||||
operator= (view &&rhs) noexcept
|
||||
{
|
||||
m_begin = rhs.m_begin;
|
||||
m_end = rhs.m_end;
|
||||
|
||||
rhs.m_begin = BeginT{};
|
||||
rhs.m_end = EndT{};
|
||||
|
||||
return *this;
|
||||
};
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
constexpr BeginT begin (void) noexcept { return m_begin; }
|
||||
constexpr EndT end (void) noexcept { return m_end; }
|
||||
|
Loading…
Reference in New Issue
Block a user