我正在编写自己的容器,该容器不需要可移动和可复制的类型。我认为在异常安全方面我可以稍微简化逻辑。但是我注意到分配器construct
的destroy
成员函数没有关于何时可以和不能抛出异常的措辞。
我很确定我以前读过这些措辞。否则,即使我的类型不可移动,construct
当我调整缓冲区大小以增加容量时,仍然可以从用户提供的分配器中抛出异常。这需要复杂的回滚代码来保证我真正想跳过的强大的异常安全性。
是否有一种措辞只允许从调用 ctor/dtor 时抛出异常,或者分配器是否总是需要复杂的机制来维护异常安全?