C++ 14-Standard definiert die find() Elementfunktionen std::map
wie folgt:Warum std :: map find() wird nicht als noexcept deklariert?
iterator find(const key_type& x);
const_iterator find(const key_type& x) const;
Warum sind diese Funktionen nicht als noexcept
definiert? Was könnte im Inneren schief gehen, das würde eine Ausnahme auslösen oder ein undefiniertes Verhalten erzeugen (außer, dass kein Element gefunden wird, in welchem Fall die Funktion einen end
Iterator zurückgibt und kein Ausnahmetest erforderlich wäre)?
verwandt: http://stackoverflow.com/questions/20517259/why-vector-access-operators-are-not-specified-as-noexcept – NathanOliver
Ich glaube nicht, dass die 'Compare'-Funktion einer Karte zu haben sei noexept, also denke ich nicht, dass 'find()' noexept sein könnte, da es die Schlüssel vergleicht – 88877
@ 88877 Natürlich kann "Compare" tatsächlich werfen: '23.2.4.1.1' von C++ 14 Zustände' löschen (k) wirft keine Ausnahme, es sei denn, diese Ausnahme wird vom Compare-Objekt des Containers ausgelöst (falls vorhanden). "Bitte geben Sie Ihren Kommentar als Antwort ab. – PowerGamer