std::vector::shrink_to_fit() 不检查分配器是否相等

std::vector::shrink_to_fit() does not check allocator equality

我有自己的堆栈分配器,它适用于我的测试用例,除了 std::vector::shrink_to_fit()

shrink_to_fit() 尝试使用不同于最初分配内存的有状态分配器来释放内存。

我的理解是,在从一个分配器分配的内存通过另一个分配器释放之前,容器必须检查分配器是否相等。我错了吗?

引用自:https://en.cppreference.com/w/cpp/named_req/Allocator

a1 == a2 returns true only if the storage allocated by the allocator a1 can be deallocated through a2. Establishes reflexive, symmetric, and transitive relationship. Does not throw exceptions.

在我的示例中,甚至没有调用相等性检查运算符。

我正在使用 g++ 5.4.0。可以在此处找到完整的代码示例: https://onlinegdb.com/ryG9W5sx4

分配器的副本必须比较相等。你的没有。

(因此即使是有状态的分配器也不能有嵌入式存储。)