Nachdem nur eine Warnung vom Compiler für diese Funktion erhalten:Warum ist die zurückgegebene Adresse der lokalen Variablen oder temporär nur eine Warnung und kein Fehler?
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;
}
, frage ich mich, warum eine Adresse einer lokalen Variablen oder vorübergehende Rückkehr keinen Fehler verdienen. Gibt es Umstände, unter denen Sie es tun müssen? Was ist der Grund dafür, dass es sich nur um "undefiniertes Verhalten" und nicht um eine sprachliche Einschränkung handelt?
Ich kann an keine denken.
Es könnte in der Funktion als statisch deklariert werden. – OldProgrammer
Würde der Compiler nicht wissen, dass es statisch ist? – Robinson
Zufallsgenerierung;) – tsuki