Don't return reference on copy assignment operators

We prefer to prevent using chained assignment (`T a = b = c = T();`) as this
can lead to confusing code and subtle bugs.

According to https://en.wikipedia.org/wiki/Assignment_operator_(C%2B%2B), C++
allows any arbitrary return type, so this is standard compliant.

This could be re-assessed if/when we have an actual need for a behavior more
akin to that of the C++ STL, for now this PR simply changes a handful of
cases which were inconsistent with the rest of the codebase (`void` return
type was already the most common case prior to this commit).
This commit is contained in:
Rémi Verschelde 2021-11-30 15:19:26 +01:00
parent 2d118bd8b8
commit 7da392bcc5
No known key found for this signature in database
GPG key ID: C3336907360768E1
28 changed files with 93 additions and 90 deletions

View file

@ -234,19 +234,17 @@ public:
data[i] = p_from.data[i];
}
}
inline LocalVector &operator=(const LocalVector &p_from) {
inline void operator=(const LocalVector &p_from) {
resize(p_from.size());
for (U i = 0; i < p_from.count; i++) {
data[i] = p_from.data[i];
}
return *this;
}
inline LocalVector &operator=(const Vector<T> &p_from) {
inline void operator=(const Vector<T> &p_from) {
resize(p_from.size());
for (U i = 0; i < count; i++) {
data[i] = p_from[i];
}
return *this;
}
_FORCE_INLINE_ ~LocalVector() {