I finished reading Thomas Becker's "C++ Rvalue References". I have a couple questions on Rvalues and Rvalue references.
Suppose I have a simple array class:
template <class T>
MyArray
{
...
T* m_ptr;
};
Further suppose it provides:
#if(__cplusplus >= 201103L)
MyArray(MyArray&& t)
{
std::swap(*this, t);
}
MyArray operator=(MyArray&& t)
{
std::swap(*this, t);
return *this;
}
#endif
Now, suppose I have a derived class that does not add new data members:
MyImprovedArray : public MyArray
{
...
};
What is required of MyImprovedArray
?
Does it need a MyImprovedArray(MyImprovedArray&&)
and MyImprovedArray& operator=(MyImprovedArray&&)
also? If so, does it only need to perform the base class std::move
? Or does it need to perform the std::swap
too?
MyImprovedArray(MyImprovedArray&& t)
: MyArray(std::move(t))
{
}
Aucun commentaire:
Enregistrer un commentaire