Я пытался понять повышение :: контейнер :: allocator_traits когда я столкнулся с boost :: container :: allocator_traits :: is_partially_propagable.
Я не могу найти какой-либо другой документ об этом в Интернете, и я могу понять всех остальных членов boost :: container :: allocator_traits, кроме is_partially_propagable и storage_is_unpropagable.
Редактировать:
И как они реализованы и как их использовать при написании контейнера?
Это (is_partially_propagable
) означает, что распределитель использует внутреннее хранилище (у него есть состояние), и не вся выделенная им память может быть освобождена другим распределителем, даже если оба сравниваются. (Предполагается, что распределители одного и того же типа всегда должны быть одинаковыми и взаимозаменяемыми)
Какие storage_is_unpropagable
делает это взять указатель на выделенную память и вернуть true
если это память, которая не распространяется. (Так как не вся память должна быть не распространяемой)
Это распределитель (small_vector_allocator
) используется как оптимизация пространства в small_vector
,
https://www.boost.org/doc/libs/1_65_0/boost/container/small_vector.hpp
Других решений пока нет …