У меня есть свой собственный распределитель стека, который работает с моими тестами, за исключением случаев, когда std::vector::shrink_to_fit()
shrink_to_fit()
пытается освободить память с другим распределителем состояний, отличным от того, из которого она была первоначально выделена.
Насколько я понимаю, контейнер должен проверять распределители на равенство, прежде чем память, выделенная из одного распределителя, будет освобождена через другой.Я не прав?
Цитата из: https://en.cppreference.com/w/cpp/named_req/Allocator
a1 == a2
возвращает true, только если память, выделенная распределителем a1, может быть освобождена через a2.Устанавливает рефлексивные, симметричные и переходные отношения.Не выдает исключений.
В моем примере операторы проверки равенства даже не вызываются.
Я использую g ++ 5.4.0.Полный пример кода можно найти здесь: https://onlinegdb.com/ryG9W5sx4