Wann sollte ich noexcept wirklich verwenden?
Dasnoexcept
Das Schlüsselwort kann in geeigneter Weise auf viele Funktionssignaturen angewendet werden, ich bin mir jedoch nicht sicher, wann ich es in der Praxis verwenden soll. Basierend auf dem, was ich bisher gelesen habe, die Last-Minute-Ergänzung vonnoexcept
scheint einige wichtige Probleme anzugehen, die beim Werfen von Move-Konstruktoren auftreten. Es ist mir jedoch immer noch nicht möglich, zufriedenstellende Antworten auf einige praktische Fragen zu geben, über die ich mehr lesen konntenoexcept
an erster Stelle.
Es gibt viele Beispiele für Funktionen, von denen ich weiß, dass sie niemals ausgelöst werden, für die der Compiler dies jedoch nicht selbst bestimmen kann. Soll ich anhängennoexcept
zur Funktionsdeklaration inalle solche Fälle?
Ich muss darüber nachdenken, ob ich etwas anhängen muss oder nichtnoexcept
nach demjeden Die Funktionsdeklaration würde die Produktivität des Programmierers erheblich reduzieren (und wäre ehrlich gesagt ein Nervenkitzel). In welchen Situationen sollte ich bei der Verwendung von vorsichtiger sein?noexcept
, und für welche Situationen kann ich mit dem Implizierten durchkommennoexcept(false)
?
Wann kann ich nach der Verwendung realistisch mit einer Leistungsverbesserung rechnen?noexcept
? Geben Sie insbesondere ein Codebeispiel an, für das ein C ++ - Compiler nach dem Hinzufügen von einen besseren Maschinencode generieren kannnoexcept
.
Persönlich interessiert michnoexcept
aufgrund der größeren Freiheit, die dem Compiler eingeräumt wird, um bestimmte Arten von Optimierungen sicher anzuwenden. Profitieren moderne Compiler davon?noexcept
auf diese Weise? Wenn nicht, kann ich davon ausgehen, dass einige dies in naher Zukunft tun?