¿Proporciona C++ 11 alguna garantía sobre las funciones o métodos inline
, cuando realizan llamadas a otras funciones declaradas con el calificador noexcept
?C++ 11 calificador noexcept y métodos en línea
class My_String { ...
const char * c_str() const noexcept;
inline operator const char *() const { return c_str(); }
};
que asumen un compilador de optimización sería libre de aplicar el método en línea sin plena EH y la pila de desenrollado, según el noexcept
calificación. También esperaría esto por un simple método de acceso también:
... inline operator const char *() const { return m_buffer; }
Aunque este ejemplo se ve trivial, a excepción garantiza importa cuando se utiliza para implementar otras clases o funciones. Q: ¿El estándar C++ 11 aborda esto o los métodos en línea deben marcarse noexcept
? ¿O es mejor omitir noexcept
a menos que requiera para que coincida con una especificación de clase o función?
Edit: Para evitar algunas confusiones: ¿Está implícito noexcept
para el método en línea?
Para el código proporcionado por el usuario, 'noexcept' solo está implícito en los destructores, como una respuesta simple. –
una pregunta de seguimiento es: ** ¿debería uno declarar 'noexcept' siempre que sea posible? ** – Walter