Скажем, у меня есть простая структура, которая содержит вектор и определяет оператор присваивания копии, и функция, которая возвращает эту структуру, например:
struct SimpleStruct
{
vector< int > vec1;
operator=( SimpleStruct& other )
{
vec1 = other.vec1;
}
}
SimpleStruct GetStruct();
Насколько я понимаю, поскольку я объявил оператор присваивания копии, компилятор не будет автоматически генерировать конструктор перемещения для SimpleStruct.
Так что, если я использую функцию GetStruct
следующим образом:
SimpleStruct value = GetStruct();
Достаточно ли умен компилятор, чтобы перемещать, а не копировать вектор, когда я говорю vec1 = other.vec1;
? Или мне нужно будет явно определить конструктор перемещения / оператор присваивания для SimpleStruct, чтобы воспользоваться векторным перемещением?