【发布时间】:2016-04-12 23:48:08
【问题描述】:
考虑一些使用动态内存(即AllocatorAwareContainer)并且大小和容量为零的标准容器。例如,获取std::vector 并致电vec.resize(0); vec.shrink_to_fit();。
我想这样的容器实例将只包含用于其逻辑内容的nullptr 指针和用于跟踪size 等信息的std::size_t 成员。我还想他们的析构函数基本上什么都不做,因为没有动态内存要释放。
据我所知,所有容器的析构函数都是noexcept。 IE。在销毁期间抛出异常时,他们应该调用std::terminate。在Allocator::deallocate()的情况下有可能抛出异常。
我能否确定处于上述状态的容器不会在销毁时调用std::terminate?
【问题讨论】:
-
对不起,你能改写前两段吗?我无法理解它的要求。
-
@Arunmu 不确定。我使用谷歌翻译,这就是我能从他那里得到的一切。
-
@Arunmu 如果问题的表述真的很糟糕,您可以投票结束它。
-
我真的不想那样做。您能否尝试提供另一个带有小 cmets 的代码示例。如果那更清楚,那么我可以编辑问题。
-
我改写了开头的段落,如果您不喜欢这些更改,请随时回滚。
标签: c++ c++11 stl noexcept exception-safety