Предоставляет ли С++ 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; }
В то время как этот пример выглядит тривиальным, исключение гарантирует значение при использовании для реализации других классов или функций. Q: Указывает ли стандартный С++ 11 этот или должен встроенный метод noexcept
? Или лучше опустить noexcept
, если это не требуется, чтобы соответствовать спецификации класса или функции?
Изменить: Чтобы избежать некоторой путаницы: неявный noexcept
для встроенного метода?