C++11 квалификатор noexcept и встроенные методы

Дает ли 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неявным для встроенного метода?

11
задан Brett Hale 15 August 2012 в 12:09
поделиться