Предоставляет ли C++ 11 какие-либо гарантии относительно функций или методов inline
, когда они совершают вызовы для других функций, объявленных с помощью классификатора noexcept
?C++ 11 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; }
Хотя этот пример выглядит тривиальным, исключение гарантирует от того, когда они используются для реализации других классов или функций. Вопрос: Имеет ли стандартный код C++ 11 эти или следующие встроенные методы: noexcept
? Или лучше опустить noexcept
, если не требуется в соответствии со спецификацией класса или функции?
Редактировать: Во избежание недоразумений: noexcept
неявный для встроенного метода?
Для кода, предоставленного пользователем, 'noexcept' является только неявным для деструкторов, как простой ответ. –
следующий вопрос: ** следует ли объявлять 'noexcept', когда это возможно? ** – Walter