考虑一些使用动态内存(即AllocatorAwareContainer)并且大小和容量为零的标准容器。例如,接 astd::vector
并调用vec.resize(0); vec.shrink_to_fit();
。
我想这样的容器实例将只包含nullptr
其逻辑内容的指针和std::size_t
跟踪信息的成员,例如size
. 我还想他们的析构函数基本上什么都不做,因为没有动态内存可以释放。
据我所知,所有容器的析构函数都是noexcept
. 即在销毁期间抛出异常时,他们应该调用std::terminate
. Allocator::deallocate()
在抛出异常的情况下是可能的。
我可以确定上述状态中的容器永远不会要求std::terminate
销毁吗?