Например,
class A
{
public:
A(int v)
{
a_[0]=v;
a_[1]=v;
}
A(A&& other) noexcept
: a_(std::move(other.a_)){}
A& operator=(A&& other) noexcept
{
a_ = std::move(other.a_);
return *this;
}
private:
std::array<int,2> a_;
};
код, соответствующий семантике перемещения, можно считать «очевидным» (т. Е. Перемещением всех подвижных элементов). Если это опущено, компиляторам все еще удается генерировать двоичные файлы, которые будут правильно перемещать экземпляры A?