Ist die Rückgabewertoptimierung (RVO) kein Fehler?

Ich stelle vielleicht eine dumme Frage, aber ich habe auf der Wikipedia-Seite nach RVO gesuchtHie und konnte nicht aufhören, sich zu fragen, ob dieses Verhalten falsch ist. Ich habe es in meiner Maschine ausprobiert und RVO ist trotz Optimierungslevel voll in Betrieb. Was wäre, wenn es tatsächlich etwas gäbGROS Happenning in einem Konstruktor? Ich weiß, dass es nicht sollte, aber was ist, wenn? Ich kann nicht verstehen, warum RVO immer noch auftreten würde, wenn der Konstruktor Nebenwirkungen aufweist.

EDIT:-fno-elide-constructors scheint RVO zu stoppen. Aber die Frage bleibt.

EDIT2: Was den Ernst betrifft, wie viele Leute wissen von so etwas? Es ist vielleicht in der Norm, aber es ist immer noch ein wirklich hässliches Feature, wie ich es sehe. Zumindest Compiler sollten es standardmäßig deaktivieren und einen Schalter für Personen bereitstellen, die dies wissen. :)

EDIT 3: Ich bestehe immer noch darauf, dass das wirklich schlecht ist. :). Ich glaube, ich kenne keine andere Sprachbeschränkung wie diese, die direkt gegen die Syntax der Sprache verstößt. Alles andere wirft entweder Compiler- oder Linkerfehler auf, oder?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage