为什么clear()函数是noexcept而析构函数不是?

问题描述 投票:0回答:1

我注意到,在分配器感知容器接口中,标准要求

clear()
成员函数为
noexcept
,而析构函数则不是。此外,在某些基于节点的容器(例如
std::forward_list
std::set
)的情况下会出现差异,因为
clear()
成员函数执行与析构函数相同的操作。造成这种差异有什么原因吗?

c++ c++11 c++-standard-library noexcept
1个回答
0
投票

析构函数是隐式

noexcept
,除非任何成员变量析构函数或基类析构函数已被标记为
noexcept(false)
,或者析构函数本身被显式标记为
noexcept(false)

© www.soinside.com 2019 - 2024. All rights reserved.