Обнаружить (бессмысленное) назначение временному объекту
Есть ли какая-либо опция компилятора, которая позволяет получить предупреждение при попытке назначить временный объект?
Пример:
struct S {
S op() { return S(); }
};
int main() {
S s;
s.op() = s; // assign to temporary. Wants to warn here.
}
Я знаю, что вы можете объявить тип возвращаемого значения op
как const
чтобы предотвратить такую ситуацию, но сейчас меня интересуют только параметры компилятора.
Вы можете использовать любой популярный современный компилятор.
1 ответ
Компилятор может быть не в состоянии определить полезные побочные эффекты.
Компиляторы предупреждают
int test( S & data );
test( S.op());