Этот вопрос возникает из вопросов, поднятых в этом ответе.
Обычно мы определяем операторы присваивания копирования для типа T
как T& operator=(const T&)
и перемещаем операторы присваивания для типа T
как . ] Оператор T&=(T&&)
.
Однако что происходит, когда мы используем параметр-значение, а не ссылку?
class T
{
public:
T& operator=(T t);
};
Это должно сделать T как копирование, так и перемещение присваиваемыми. Однако я хочу знать, каковы языковые разветвления для T
?
В частности:
T
согласно спецификации?T
согласно спецификации?T
иметь сгенерированный компилятором оператор присваивания копирования?T
иметь сгенерированный компилятором оператор присваивания перемещения?std::is_move_assignable
?