Только что получил предупреждение от компилятора для этой функции:
template<class T>
Matrix3x3<T> & operator - (Matrix3x3<T> const & p)
{
auto m = Matrix3x3<T>(p);
m.m11 = -m.m11; m.m12 = -m.m12; m.m13 = -m.m13;
m.m21 = -m.m21; m.m22 = -m.m22; m.m23 = -m.m23;
m.m31 = -m.m31; m.m32 = -m.m32; m.m33 = -m.m33;
return m;
}
мне интересно, почему возврат адреса локальной переменной или временного значения не заслуживает ошибки. Есть ли обстоятельства, когда вы должны это делать? Какое обоснование для этого только "поведения undefined", а не ограничения языка?
Я не могу думать ни о чем.