Дает ли C++11 какие-либо гарантии в отношении функций или методов inline
, когда они вызывают другие функции, объявленные с помощью квалификатора noexcept
?
class My_String {...
const char * c_str () const noexcept;
inline operator const char * () const { return c_str(); }
};
Я предполагаю, что оптимизирующий компилятор может реализовать встроенный метод без полного EH и раскручивания стека в соответствии с квалификацией noexcept
. Я также ожидал бы этого и для простого метода доступа:
... inline operator const char * () const { return m_buffer; }
Хотя этот пример выглядит тривиальным, гарантии исключения имеют значение при использовании для реализации других классов или функций. Вопрос:Стандарт С++ 11 решает эту проблему или встроенные методы должны быть помечены noexcept
?Или лучше опустить noexcept
, если только не требует для соответствия спецификации класса или функции?
Изменить:Во избежание путаницы :Является ли noexcept
неявным для встроенного метода?