C ++ 11は、修飾子inline
で宣言された他の関数を呼び出すときに、関数またはメソッドに関する保証を提供しますか?noexcept
class My_String { ...
const char * c_str () const noexcept;
inline operator const char * () const { return c_str(); }
};
最適化コンパイラは、noexcept
資格に従って、完全なEHとスタックの巻き戻しなしでインラインメソッドを自由に実装できると思います。単純なアクセサーメソッドでもこれを期待します。
... inline operator const char * () const { return m_buffer; }
この例は些細なことのように見えますが、他のクラスや関数を実装するために使用する場合は、例外の保証が重要になります。Q: C ++ 11標準はこれに対応していますか、それともインラインメソッドにマークを付ける必要がありnoexcept
ますか?または、クラスまたは関数の仕様に一致する必要noexcept
がない限り、省略する方がよいでしょうか。
編集:混乱を避けるために:noexcept
インラインメソッドには暗黙的ですか?