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