不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'僅用於析構函數隱式的,如一個簡單的答案。 – 2012-08-15 12:35:44
後續問題是:**應該在任何可能的情況下聲明'noexcept' ** – Walter 2012-08-15 13:06:50