If I define operator+ for a type, in the usual fashion
struct S {};
S operator+(S const &, S const &) {
return {};
}
users of S can write code like
S s{};
s + s = S{}; // huh
From what I can tell, operator+ returns a temporary object of type S, which is then assigned to. The object then dies at the end of the statement, because there's no name for it, and so the statement is effectively a no-op.
I don't see any use for code like that, so I would like to make that a compile error. Is there a way to do that? Even a warning would be better than nothing.