我在某处读到,从c ++ 11开始,析构函数是隐式声明的noexcept(true)
。
从标准第12.4节开始
没有异常规范的析构函数的声明具有与隐式声明相同的异常规范
但是我在标准的任何地方都找不到一段暗示析构函数是隐含的noexcept(true)
。谁能指出我可以找到此信息的部分?
我相信您正在寻找§15.4/ 14(重点是我的):
继承构造函数(12.9)和隐式声明的特殊成员函数(第12节)具有异常规范。如果
f
是继承构造函数或隐式声明的默认构造函数,副本构造函数,move构造函数,destructor,副本赋值运算符或移动赋值运算符,T
则当且仅当T
异常规范允许时,其隐式异常规范指定type-id由f
的隐式定义直接调用的函数;f
如果直接调用的任何函数均允许所有异常,则允许所有异常;如果直接调用的每个函数均不允许异常,则f具有异常规范noexcept(true)。[注: 由此可见,f
noexcept(true)
如果不调用其他函数,则具有异常规范。—尾注]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句