Gibt C++ 11 irgendwelche Garantien über inline
Funktionen oder Methoden, wenn sie Aufrufe an andere Funktionen vornehmen, die mit dem noexcept
Qualifier deklariert sind?C++ 11 noexcept Qualifier und Inline-Methoden
class My_String { ...
const char * c_str() const noexcept;
inline operator const char *() const { return c_str(); }
};
Ich gehe davon ein optimierende Compiler frei sein würde, die Inline-Methode ohne Voll EH und Stack Abwickeln, gemäß der noexcept
Qualifikation zu implementieren. Ich würde auch dies für eine einfache Zugriffsmethode erwarten zu:
... inline operator const char *() const { return m_buffer; }
Während dieses Beispiel trivial aussieht, Ausnahme Angelegenheit garantiert, wenn verwendet, um andere Klassen oder Funktionen zu implementieren. F: Behandelt der C++ 11-Standard dies oder sollten Inline-Methoden mit noexcept
gekennzeichnet werden? Oder ist es besser noexcept
wegzulassen, außer erforderlich, um eine Klassen- oder Funktionsspezifikation zu erfüllen?
Bearbeiten: Um einige Verwirrung zu vermeiden: Ist noexcept
implizit für die Inline-Methode?
Für den Benutzer bereitgestellten Code ist 'noexcept' nur implizit für Destruktoren, als eine einfache Antwort. –
eine Folgefrage ist: ** sollte man 'noexcept' wann immer möglich erklären? ** – Walter