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?

Antworten auf die Frage(8)

Ihre Antwort auf die Frage