Il C++ 11 fornisce garanzie circa le funzioni o i metodi inline
quando eseguono chiamate ad altre funzioni dichiarate con il qualificatore noexcept
?C++ 11 qualificatore e metodi inline noex
class My_String { ...
const char * c_str() const noexcept;
inline operator const char *() const { return c_str(); }
};
I assumere un compilatore ottimizzato sarebbe libera di implementare il metodo in linea senza la piena EH e impilare svolgimento, come per la qualificazione noexcept
. Mi aspetterei anche questo per un semplice metodo di accesso troppo:
... inline operator const char *() const { return m_buffer; }
Mentre questo esempio sembra banale, fatta eccezione garantisce importa quando utilizzato per implementare altre classi o funzioni. Q: Lo standard C++ 11 indirizza questo o dovrebbe essere contrassegnato con i metodi in linea noexcept
? O è meglio omettere lo noexcept
a meno che lo non contenga lo per corrispondere a una specifica di classe o funzione?
Modifica: Per evitare qualche confusione: è noexcept
implicito per il metodo inline?
Per il codice fornito dall'utente, 'noexcept' è solo implicito per i distruttori, come una risposta semplice. –
una domanda successiva è: ** si dovrebbe dichiarare 'noexcept' quando possibile? ** – Walter