Обнаружить (бессмысленное) назначение временному объекту

Есть ли какая-либо опция компилятора, которая позволяет получить предупреждение при попытке назначить временный объект?

Пример:

struct S {
S op() { return S(); }
};

int main() {
S s;
s.op() = s; // assign to temporary. Wants to warn here.
}

Я знаю, что вы можете объявить тип возвращаемого значения op как const чтобы предотвратить такую ​​ситуацию, но сейчас меня интересуют только параметры компилятора.

Вы можете использовать любой популярный современный компилятор.

4

Решение

Компилятор может быть не в состоянии определить полезные побочные эффекты.

Компиляторы предупреждают

int test( S & data );

test( S.op());
0

Другие решения

Других решений пока нет …