Ответ 1
Пример из стандарта std::atomic
. Он возвращает назначенное значение. Если он вернет ссылку, то чтение через нее может привести к другому результату.
Пусть foo
- структура или класс с оператором присваивания копии:
struct foo {
foo &operator=(const foo &); // or with some other return type?
};
Есть ли разумная причина возвращать из operator=()
ничего, кроме *this
? Использование его для чего-то, не связанного с назначением, не квалифицируется как разумное.
Пример из стандарта std::atomic
. Он возвращает назначенное значение. Если он вернет ссылку, то чтение через нее может привести к другому результату.
Если вы хотите предотвратить цепочку привязки.
Иногда приятно предупреждать такие выражения:
x = y = z = a = b = c = d = foo{15};
Итак, вы делаете оператор присваивания return void.
struct foo {
void operator=(const foo &);
};
Для некоторых типов цепочка не имеет смысла. Но вы должны смотреть на то, что на случай случае.