5

ここで私はそれを見つけました:

継承コンストラクター [...] は、noexcept(false) である関数を呼び出す必要がない限り、デフォルトですべて noexcept(true) です。その場合、これらの関数は noexcept(false) です。

次の例では、継承されたコンストラクターが、基底クラスのようにnoexcept(true)明示的に定義されているにもかかわらず、それ自体が呼び出されるnoexcept(false) である関数と見なされるということですか?noexcept(false)

struct Base {
    Base() noexcept(false) { }
};

struct Derived: public Base {
    using Base::Base;
};

int main() {
    Derived d;
}
4

1 に答える 1